【问题标题】:Unable to get simple passportjs with mongoose working无法通过猫鼬工作获得简单的passportjs
【发布时间】:2013-03-14 17:06:44
【问题描述】:

我正在使用passport-local-mongoose 并尝试使用存储库中的login example 设置一个简单的工作示例。但是我遇到了问题,我收到一条错误消息,上面写着“错误:无法将用户序列化到会话中”。

我已经在gist 中重现了这个问题。 (要运行 gist,您需要替换 user.js 文件中的 mongodb 服务器 IP 和数据库名称,并使用 usernamepassword 值对 /register 端点执行 POST。)

在其中您将看到端点“/setval”和“/getval”,它们在会话中设置值并检索它,表明会话支持正在工作。端点“/authtest”给出未经授权的响应,即使在对“/login”进行 POST 之后也是如此。端点 '/authdebug' 提供了更多信息 - 上面提到的错误。

有人对发生的事情有任何想法吗?我要尝试的东西已经不多了。

【问题讨论】:

    标签: javascript node.js express passport.js


    【解决方案1】:

    我认为passport.authenticate 应该只用在实际用于验证用户的路由上;在您的情况下,这将是 /login 路线。

    对于您要确保用户之前已通过身份验证的路由,例如/authtest,您需要一个中间件来检查用户是否已通过身份验证:

    function ensureAuthenticated(req, res, next) {
      if (req.isAuthenticated()) {
        return next();
      }
      res.redirect('/login'); // or your login page
    }
    // and
    app.get('/authtest', ensureAuthenticated, function(req, res) {
     ...
    });
    

    该中间件的替代方案是connect-ensure-login

    【讨论】:

      猜你喜欢
      • 2014-08-21
      • 2017-01-05
      • 2014-10-19
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2019-07-07
      • 2012-11-20
      相关资源
      最近更新 更多