【发布时间】:2016-07-22 22:26:18
【问题描述】:
我正在使用Stormpath for Expressjs(目前没有 Passport)来处理我的用户注册。我非常关心注销用户的正确方法是什么。
以前,我总是通过 GET 方法,但是 Stormpath explicitly requires a POST call to the /logout page。
我只在用户通过 Stormpath 登录时显示用户菜单,这是我在 Express 中的 router.js 中拥有的超级简单的中间件:
router.use(stormpath.getUser, function (req, res, next) {
if (req.user) {
req.session.useremail = req.user.email;
}
next();
});
现在,当然在这个菜单中有 Logout 条目。我希望我的用户单击此链接以注销,但是我知道当使用像 <a href="/logout">Logout</a> 这样的锚链接时,会发送 GET 请求,而不是 POST。
我一直在寻找无数种将 GET 请求重定向到 POST 的方法,但我觉得这绝对是错误的方法。另外我觉得在菜单中使用表单是没有意义的:
<ul>
<li>User Profile</li>
<li>User Settings</li>
<form action="/logout" method="/post">
<input type="submit">
</form>
</ul>
所以问题是:通过 POST 简单地注销用户的最佳方式是什么?
【问题讨论】:
-
您好!我在Stormpath 工作,我实现了对 POST 的更改。这个 SO 讨论很好地总结了我们选择使用 POST 的原因:stackoverflow.com/questions/3521290/logout-get-or-post
标签: node.js http authentication express request