Expressjs护照本地无法注销
Posted
技术标签:
【中文标题】Expressjs护照本地无法注销【英文标题】:Expressjs passport-local can't logout 【发布时间】: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() ***.com/questions/13758207/… 是否还有其他问题
【参考方案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);
这样,当刷新页面时,用户没有会话。如果没有人通过身份验证,请确保您重定向到正确的页面。
也许不是最好的方法,但它确实有效。
【讨论】:
以上是关于Expressjs护照本地无法注销的主要内容,如果未能解决你的问题,请参考以下文章
req.session.passport 为空,未调用 deserializeUser - ExpressJS,Passport
TypeError:无法读取未定义的属性“findAll”(expressjs)
Nodejs:无法同时运行expressjs和reactjs
没有 ExpressJS 到本地服务器的“Access-Control-Allow-Origin”标头