Menu
CoddyTech

Поиск сессии

Часть раздела Аутентификация и безопасность путешествия по 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 вместо массивов.

challenge icon

Задание

Легко

В 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