我正在尝试将Passport注销功能合并到我的一个快速请求路由中,它似乎并没有破坏会话。在我发出注销请求后,我仍然可以访问我想要隐藏的端点。
以下是代码:
const express = require('express');
const router = express.Router();
const app = express();
const path = require('path');
const passport = require('passport');
const passportHttp = require('passport-http');
const logout = require('express-passport-logout');
router.get('/', function (req, res) {
logout();
console.log('logged out');
res.sendFile(path.resolve('./public/logout.html'));
})
module.exports = router;
任何帮助将不胜感激!谢谢!
答案 0 :(得分:3)
您是否尝试过使用req.logout();而不是logout();
没有这2个套餐?
const passportHttp = require(' passport-http');
const logout = require(' express-passport-logout');
答案 1 :(得分:1)
给定模块实际上返回路由器处理程序,即function (req, res) {..}
。在您的情况下,哪个不需要req
。您可以看到源代码here。
你可以像这样使用它:
router.get('/logout', logout());
您可以使用以下模块作为中间件:
var logout = function() {
return function (req, res, next) {
req.logout();
delete req.session;
next();
};
};
router.get('/', logout, function (req, res) {
console.log('logged out');
res.sendFile(path.resolve('./public/logout.html'));
})
答案 2 :(得分:0)
如果您使用快递本地人,则在req.logout()
之后添加以下行:
req.user=null
或
delete req.user
我希望这会有所帮助
答案 3 :(得分:0)
/* Handle Logout */
router.get('/logout', function(req, res) {
console.log("I am Logout")
req.logout();
res.json({
status: "logout",
msg:"Please Log In again"
});
});
只要你在前端没有任何错误,这肯定会起作用。