Поиск сессии
Часть раздела Аутентификация и безопасность путешествия по Node.js на Coddy. Урок 9 из 24.
Идентификатор сеанса указывает на сохранённый сеанс, а тот — на учётную запись. Сам ключ не является именем пользователя. Прежде чем решать, кто выполнил запрос, установи обе связи.
// tickets: {key: 'example-key', memberId: 7}
const ticket = tickets.find(t => t.key === receivedKey);
const member = ticket && members.find(m => m.id === ticket.memberId);Не возвращай пользователя, если поиск по любому из двух звеньев не дал результата. Настоящие идентификаторы сеансов — это длинные случайные значения, которые другие люди не могут угадать; здесь используются короткие ключи, чтобы связь было легко проследить. В следующем проекте для этих двух поисков используются коллекции MongoDB и findOne вместо массивов.
Задание
ЛегкоВ exercise.js используй предоставленные массивы sessions и users. Найди сессию для sid, затем пользователя, чей идентификатор совпадает с её userId. Верни имя пользователя в 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