Menu
CoddyTech

세션 조회

Coddy Node.js 여정의 인증과 보안 섹션에 포함된 레슨. 24개 중 9번째.

세션 ID는 저장된 세션을 가리키고, 그 세션은 계정을 가리킵니다. 키 자체는 사용자 이름이 아닙니다. 요청을 보낸 사람을 판단하기 전에 두 연결을 모두 확인하세요.

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

둘 중 하나라도 조회에 실패하면 사용자를 반환하지 마세요. 실제 세션 ID는 다른 사람이 추측할 수 없도록 길고 무작위인 값입니다. 여기의 짧은 키는 관계를 쉽게 확인할 수 있게 해 줍니다. 다음 프로젝트에서는 배열 대신 이 두 번의 조회에 MongoDB 컬렉션과 findOne을 사용합니다.

challenge icon

챌린지

쉬움

exercise.js에서 제공된 sessions 배열과 users 배열을 사용하세요. sid에 해당하는 세션을 찾은 다음, 해당 세션의 userId와 id가 일치하는 사용자를 찾으세요. 사용자 이름을 user로 반환하고, 둘 중 하나라도 조회에 실패하면 null을 반환하세요.

GET /result?sid=key-a를 시도해 보세요: {"user":"ada"}. ?sid=ada처럼 사용자 이름을 넣어도 아무 의미가 없으며 null을 반환합니다. 연결된 계정이 없으므로 ?sid=orphan도 null을 반환합니다.

직접 해보기

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

인증과 보안의 모든 레슨

직접 연습해 보세요: Express 플레이그라운드