Passport req.logOut()函数不起作用?

时间:2017-08-07 07:09:02

标签: node.js express passport.js

我正在尝试将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;

任何帮助将不胜感激!谢谢!

4 个答案:

答案 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"
         });
});

只要你在前端没有任何错误,这肯定会起作用。