Una consulta de sesión
Parte de la sección Autenticación y seguridad del Journey de Node.js de Coddy. Lección 9 de 24.
Un identificador de sesión apunta a una sesión almacenada, y esa sesión apunta a una cuenta. La clave en sí no es un nombre de usuario. Resuelve ambos enlaces antes de decidir quién hizo la solicitud.
// tickets: {key: 'example-key', memberId: 7}
const ticket = tickets.find(t => t.key === receivedKey);
const member = ticket && members.find(m => m.id === ticket.memberId);No devuelvas ningún usuario si falla cualquiera de las búsquedas. Los identificadores de sesión reales son valores aleatorios largos para que otras personas no puedan adivinarlos; las claves cortas de aquí facilitan inspeccionar la relación. El siguiente proyecto usa colecciones de MongoDB y findOne para estas dos búsquedas en lugar de matrices.
Desafío
FácilEn exercise.js, usa los arreglos sessions y users proporcionados. Busca la sesión correspondiente a sid y, después, el usuario cuyo id coincide con su userId. Devuelve el nombre de usuario en user, o null si alguna de las búsquedas falla.
Prueba GET /result?sid=key-a: {"user":"ada"}. Un nombre de usuario como ?sid=ada no demuestra nada y devuelve null. ?sid=orphan también devuelve null porque falta su cuenta.
Pruébalo tú mismo
const sessions = [
{ id: 'key-a', userId: 10 },
{ id: 'key-b', userId: 20 },
{ id: 'orphan', userId: 99 },
];
const users = [
{ id: 10, username: 'ada' },
{ id: 20, username: 'bo' },
];
export function exercise({ sid }) {
return { user: sid };
}
Todas las lecciones de Autenticación y seguridad
2Sesiones y cookies
Recordar con cookiesUna consulta de sesiónSesiones de inicio de sesiónRutas protegidas por inicio de sesiónPractica por tu cuenta: Playground de Express