Uma consulta de sessão
Parte da seção Autenticação e segurança do Journey de Node.js da Coddy. Lição 9 de 24.
Um ID de sessão aponta para uma sessão armazenada, e essa sessão aponta para uma conta. A própria chave não é um nome de usuário. Resolva os dois vínculos antes de decidir quem fez a solicitação.
// tickets: {key: 'example-key', memberId: 7}
const ticket = tickets.find(t => t.key === receivedKey);
const member = ticket && members.find(m => m.id === ticket.memberId);Não retorne nenhum usuário se qualquer uma das buscas não encontrar um resultado. IDs de sessão reais são valores longos e aleatórios para que outras pessoas não consigam adivinhá-los; as chaves curtas usadas aqui facilitam a análise da relação. O projeto a seguir usa coleções do MongoDB e findOne para essas duas buscas, em vez de arrays.
Desafio
FácilEm exercise.js, use os arrays sessions e users fornecidos. Encontre a sessão correspondente a sid e, em seguida, o usuário cujo id corresponde ao userId dela. Retorne o nome de usuário em user ou null se uma das buscas falhar.
Teste GET /result?sid=key-a: {"user":"ada"}. Um nome de usuário como ?sid=ada não prova nada e retorna null. ?sid=orphan também retorna null porque a conta correspondente não existe.
Experimente você mesmo
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 as lições de Autenticação e segurança
Pratique por conta própria: Playground de Express