Menu
CoddyTech

Recherche d’une session

Fait partie de la section Authentification et sécurité du Journey Node.js de Coddy. Leçon 9 sur 24.

Un identifiant de session pointe vers une session enregistrée, et cette session pointe vers un compte. La clé elle-même n’est pas un nom d’utilisateur. Résous les deux liens avant de déterminer qui a effectué la requête.

// tickets: {key: 'example-key', memberId: 7}
const ticket = tickets.find(t => t.key === receivedKey);
const member = ticket && members.find(m => m.id === ticket.memberId);

Ne renvoie aucun utilisateur si l’une ou l’autre des recherches ne trouve rien. Les vrais identifiants de session sont de longues valeurs aléatoires afin que d’autres personnes ne puissent pas les deviner ; les clés courtes utilisées ici facilitent l’examen de la relation. Le projet suivant utilise des collections MongoDB et findOne pour ces deux recherches plutôt que des tableaux.

challenge icon

Défi

Facile

Dans exercise.js, utilisez les tableaux sessions et users fournis. Trouvez la session correspondant à sid, puis l’utilisateur dont l’id correspond à son userId. Renvoyez le nom d’utilisateur dans user, ou null si l’une ou l’autre des recherches échoue.

Essayez GET /result?sid=key-a : {"user":"ada"}. Un nom d’utilisateur tel que ?sid=ada ne prouve rien et renvoie null. ?sid=orphan renvoie également null, car son compte est manquant.

Essayez vous-même

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 };
}

Toutes les leçons de Authentification et sécurité

Entraînez-vous par vous-même : Playground Express