/**
* @api {post} /logout Logout from system
* @apiName Logout
* @apiGroup Login
*/
router.post("/logout", function (req, res) {
req.logout();
req.session.destroy();
return res.redirect("/");
});
我已阅读https://stackoverflow.com/a/20306929/271577但无法找到答案。
我最近将注销更改为POST而不是GET。执行此操作后,重定向功能
POST /logout 307 4.912 ms - 36
POST / 302 3.922 ms - 23
GET / 200 7.519 ms - -
我可以在客户端手动执行此操作,但我想知道如何在服务器端执行此操作。这可能吗?
的客户端
HTML
<a href="javascript:;" onclick="logOut();">
JS
function logOut() {
$.post("/logout");
}
答案 0 :(得分:6)
您的$.post()
没有来自Javascript生成的Ajax调用的重定向。 Ajax发送请求,获得响应。 ajax调用本身根本不会改变页面位置。这是Ajax调用的一个特征。
当浏览器加载新页面时,重定向工作,服务器告诉它更改加载到新源的页面,而不是浏览器只发送Ajax调用时。
当然,您可以使用客户端Javascript在$.post()
完成后决定从客户端重定向。您甚至可以将$.post()
的响应作为新位置,然后您的客户端Javascript就可以将window.location
设置为该新网址。
function logOut() {
$.post("/logout").then(function(data) {
window.location = data.redirectUrl;
});
}
并且,在服务器上:
router.post("/logout", function (req, res) {
req.logout();
req.session.destroy();
res.send({err: 0, redirectUrl: "/"});
});