Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

Em 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