세션 조회
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을 사용합니다.
챌린지
쉬움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 플레이그라운드