Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

En 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

Practica por tu cuenta: Playground de Express