Что означает «очистить сеанс входа в систему» ​​в узле js? - PullRequest
0 голосов
/ 08 ноября 2019

Я использую модуль узла экспресс-сессии, пытаюсь понять сессию в узле js.

Почему мы используем куки? -> HTTP - это протокол без сохранения состояния, для того чтобы запрос на идентификацию исходил от того же пользователя, мы используем cookie для идентификации пользователя.

Используя экспресс-сессию, мы можем установить конфигурацию cookie (maxAge, secretKey и т. Д.)

Теперь, если мы хотим очистить сессию, которую мы используем

req.session.destroy((err) => {
    if(err) {
        return console.log(err);
    }
    res.redirect('/');
 });

Код работает отлично, но событие после очистки сеанса, cookie все еще присутствует в браузере. Тем не менее сервер может сказать, что вы не действительный пользователь.

В passport.js req.logout ();сделать то же самое, чтобы очистить сессию, но в браузере все еще есть cookie.

Как это работает?

1 Ответ

1 голос
/ 08 ноября 2019

Почему мы используем куки? -> HTTP - это протокол без сохранения состояния, для того чтобы запрос идентификации поступил от того же пользователя, мы используем cookie для идентификации пользователя.

Cookies используются, когда сервер хочет отслеживать конкретного пользователя или фрагмент данных из определенногобраузер. Ситуация, когда пользователь входит в службу, создает необходимость узнать от одного запроса к следующему, от кого поступил запрос, был ли он аутентифицирован как данный пользователь и т. Д. ... Cookie используется для предоставления этой информации о будущем. запросы от данного пользователя. Файлы cookie могут использоваться для хранения определенной информации, которая требуется, или для хранения идентификатора, который затем может использоваться сервером для поиска необходимой информации для этого запроса / пользователя.

Код работает отлично, но событие после очистки сеанса, cookie все еще присутствует в браузере. Тем не менее, сервер может сказать, что вы не действительный пользователь.

Сессия работает, получая две порции информации. На сервере ищется какой-то зашифрованный идентификатор из файла cookie, чтобы найти соответствующий объект сеанса. Объект сеанса может затем содержать информацию, относящуюся к этому конкретному пользователю. Можно убить эффективность сеанса, удалив куки или удалив сеанс. В любом случае не будет зашифрованного идентификатора, поступающего из браузера со следующим запросом, который может быть сопоставлен с объектом сеанса.

Немного более безопасно удалить объект сеанса, потому что даже вы удаляете толькоcookie, но cookie был «украден» каким-то посредником, тогда этот посредник все еще может представить украденный ими cookie, даже если cookie был удален из целевого браузера. Очевидно, что если вы удалите сеанс на сервере, даже украденный файл cookie не принесет никакой пользы. Также полезно освободить память сеанса или хранилище, используемое объектом сеанса, который больше не нужен, хотя в большинстве реализаций они «истекают» в будущем и очищаются таким образом.

В passport.js req.logout ();сделать то же самое, чтобы очистить sesssion, но все еще использовать cookie в браузере.

Per Документация Passport , req.logout() удаляет свойство req.user из текущего объекта запроса и очищаетсеанс входа в систему. В документе ничего не говорится об изменении или удалении файла cookie для входа в систему, и логично было бы подумать, что метод, который очистил файл cookie, будет работать с объектом res, а не с объектом req.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...