Tra cứu phiên
Thuộc phần Xác thực và bảo mật trong hành trình Node.js của Coddy. Bài học 9 trên 24.
Mã phiên trỏ đến một phiên được lưu trữ, còn phiên đó trỏ đến một tài khoản. Bản thân khóa này không phải là tên người dùng. Hãy xác định cả hai mối liên kết trước khi quyết định ai đã gửi yêu cầu.
// tickets: {key: 'example-key', memberId: 7}
const ticket = tickets.find(t => t.key === receivedKey);
const member = ticket && members.find(m => m.id === ticket.memberId);Không trả về người dùng nếu một trong hai lần tra cứu không tìm thấy kết quả. Mã phiên thực tế là những giá trị ngẫu nhiên dài nên người khác không thể đoán được. Các khóa ngắn ở đây giúp bạn dễ xem mối liên hệ hơn. Dự án tiếp theo dùng các bộ sưu tập MongoDB và findOne cho hai lần tra cứu này thay vì dùng mảng.
Thử thách
DễTrong exercise.js, hãy dùng các mảng (array) sessions và users đã cho. Tìm phiên ứng với sid, rồi tìm người dùng có id khớp với userId của phiên đó. Trả về tên người dùng trong user, hoặc null nếu một trong hai lần tra cứu không thành công.
Thử GET /result?sid=key-a: {"user":"ada"}. Tên người dùng như ?sid=ada không chứng minh được gì và trả về null. ?sid=orphan cũng trả về null vì tài khoản tương ứng không tồn tại.
Tự làm thử
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 };
}
Tất cả bài học trong Xác thực và bảo mật
Tự luyện tập: Playground Express