【问题标题】:Passport req.logOut() function not working? [duplicate]Passport req.logOut() 函数不起作用? [复制]
【发布时间】:2018-01-14 10:07:16
【问题描述】:

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

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

【问题讨论】:

  • 对不起,我忘了补充,我已经尝试了您的示例和护照文档中的所有拼写变化,但仍然没有。
  • 我也已经阅读了该帖子,它并没有解决我的问题,因为推荐的解决方案已被弃用。
  • 如果建议的解决方案不起作用,您能否提供更多信息?您可以告诉我们您正在使用什么版本,您正在使用哪些其他软件包等。另外请阅读我编辑的答案
  • 我尝试了很多解决方案,但没有一个对我有用。最后,我尝试将包 passport@0.2.0 更新为 passport@0.2.2 并且成功了!

标签: node.js express passport.js


【解决方案1】:

您是否尝试过使用 req.logout();而不是 logout();

没有这两个包?

const passportHttp = require('passport-http');

const logout = require('express-passport-logout');

【讨论】:

  • 不知道是谁投了反对票,但这应该是答案:)
  • 这是正确的答案...为什么有人投了反对票?
【解决方案2】:

给定的模块实际上返回一个路由器处理程序,即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'));
 })

【讨论】:

    【解决方案3】:

    如果你使用的是 express locals,那么在req.logout()之后,添加这一行:

    req.user=null
    

    delete req.user
    

    希望对你有帮助

    【讨论】:

      【解决方案4】:
      /* Handle Logout */
      router.get('/logout', function(req, res) {
          console.log("I am Logout")
          req.logout(); 
          res.json({ 
                  status: "logout",
                  msg:"Please Log In again"
               });
      });
      

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

      【讨论】:

        猜你喜欢
        • 2011-07-13
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-23
        • 2014-10-05
        • 2015-07-04
        • 2018-04-06
        相关资源
        最近更新 更多