【问题标题】:Disabling sessions in nodejs Passport.js在 nodejs Passport.js 中禁用会话
【发布时间】:2015-10-07 19:20:24
【问题描述】:

我刚刚发现了Tokens for authentication,它允许会话/无状态服务器并从 MEAN 开始。看起来很棒。

现在,我正在使用Passport.js 来验证用户身份(通过电子邮件、Facebook、Google 等),就像所有教程所说的那样,它将信息存储到服务器会话中:

 // required for passport
    app.use(express.session({
        secret : 'superscret',
        expires: new Date(+new Date + settings.session.sessionTimeout),
        store: new MongoStore({})
    })); // session secret
    app.use(passport.initialize());
    app.use(passport.session({}));

是否仍然可以使用Passport.js,但不是存储会话,而是发回一个令牌以监视用户是否具有访问权限。

问题:如何禁用护照会话? (我知道如何发送令牌并收听它)。

【问题讨论】:

    标签: javascript node.js authentication express passport.js


    【解决方案1】:

    passportjs 支持禁用会话。文档passport

    认证成功后,Passport 将建立一个持久的登录会话。这对于用户通过浏览器访问 Web 应用程序的常见场景很有用。但是,在某些情况下,不需要会话支持。例如,API 服务器通常需要为每个请求提供凭据。在这种情况下,可以通过设置 session option to false 安全地禁用会话支持。

    app.get('/api/users/me',
      passport.authenticate('basic', { session: false }),
      function(req, res) {
        res.json({ id: req.user.id, username: req.user.username });
      });
    

    【讨论】:

    【解决方案2】:

    我建议在 AngularJS 中使用 satellizer,事实上的标准库,用于基于令牌的身份验证。它仅实现基于令牌的身份验证,并且更容易为您的目的工作。它也有很好的服务器示例,包括Node.js server example

    【讨论】:

    • 哇!我一直讨厌护照有一段时间了,这个库和例子是完美的。谢谢!
    猜你喜欢
    • 2015-06-12
    • 2012-10-08
    • 1970-01-01
    • 2013-02-12
    • 2014-03-21
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多