Выйти из системы JavaScript: разница между session.destroy () и установкой для сессии значения null - PullRequest
0 голосов
/ 12 марта 2020

Это относится к функции выхода из системы, которую я использую в приложении js. Ожидаемое поведение состоит в том, что как только пользователь нажимает кнопку выхода из системы, приложение перенаправляет на сервер аутентификации (authn / logout) и перенаправляет обратно в приложение, которое должно перенаправить на сервер аутентификации (authn / login_callback). Но я столкнулся с проблемой с этим.

Проблема: После открытия в обычном сеансе он перенаправляет на страницу authn. После входа в систему, даже после нажатия кнопки «Выйти», он перенаправляется обратно в приложение, в котором зарегистрирован пользователь. При открытии в Incognito он снова запрашивает учетные данные аутентификации (ожидается)

app.use("/logout", function (req, res, next) {
  ///req.session.destroy()
  req.session = null;
  next();
});

app.use(authn.logoutFilter);

app.get('/isAuthenticated', authn.isAuthenticated);

Фильтр authn.

this.logoutFilter = function (req, res, next) {
        var path = req.path;
        if (path === logoutUrl) {
            if (authEnabled) {
                res.redirect(authnUrl + "/logout");
            } else {
                res.redirect(serviceUrl);
            }
        }
        else {
            next();
        }
    };

Также я хочу понять разницу между session.destroy () и session = null.

Попробовал также метод ниже.

 app.get("/logout", function(req, res){

     if (authn_config.authEnabled) {
         res.clearCookie("TOKEN_NAME");
         req.session = null;
         res.redirect(authn_config.authnUrl + authn_config.logoutUrl);
     } else {
         res.redirect(serviceUrl);
     }
 });

Спасибо за помощь.

...