【问题标题】:Expressjs passport-local can't logoutExpressjs护照本地无法注销
【发布时间】:2012-09-10 14:00:58
【问题描述】:

我将应用护照本地复制粘贴到我的应用上,

有趣的是我可以登录用户,但我不能让他们注销,

app.get('/logout', function(req, res){
  req.logout();
  res.redirect('/');
});

这不是什么都不做,日志文件上什么都没有,我有一个指向 /logout 的链接

这是主要路线示例

app.get('/page1', function(req, res){                                                                                                                       
  res.render('page1', {user: req.user});
});

app.get('*', function(req,res){
  res.render('root', {user: req.user});
});

为什么注销它不起作用????

【问题讨论】:

  • passportjs.org/guide/log-out.html 解释它,我也试过 req.logOut();并且无法退出本地策略
  • 我唯一不同的是我删除了这行app.use(app.router); 因为破坏了我的引导模板
  • 来吧需要帮助,为什么我无法注销
  • 看起来像这个问题的副本,它确实有一个可能有效的答案。虽然我还没有验证做 req.session.detroy() stackoverflow.com/questions/13758207/… 是否还有其他问题

标签: javascript jquery node.js authentication express


【解决方案1】:

显然这是一个已知问题:

Why is PassportJS in Node not removing session on logout

上面提到的帖子建议改用req.session.destroy()

如果您能直接从 Passport 团队获得一些反馈,那就太好了。

【讨论】:

    【解决方案2】:

    这仍然是个问题。

    我所做的是在服务器端和客户端使用req.session.destroy(function (err) {});,每当他们注销时:

    const logout = () => {
        const url = '/users/logout'
        fetch(url)
        setTimeout(function () {
          location.reload();    }, 500);
    

    这样,当刷新页面时,用户没有会话。如果没有人通过身份验证,请确保您重定向到正确的页面。

    也许不是最好的方法,但它确实有效。

    【讨论】:

      猜你喜欢
      • 2014-10-20
      • 2017-04-03
      • 2019-02-24
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 2014-09-02
      • 2020-09-03
      • 2018-06-07
      相关资源
      最近更新 更多