希望护照存储req.client而不是req.user用于承载策略

时间:2016-04-04 10:39:46

标签: javascript node.js express passport.js

我正在实施Oauth2承载策略,以使用passport.js对客户端进行身份验证。 我使用passport-http-bearer包并实现了以下回调:

 passport.use(new BearerStrategy(
    function (accessToken, done) {
      Token.findOne({ token: accessToken }).populate('client').exec(function (err, token) {
        if (err) {
          return done(err);
        }
        if (!token) {
          return done(null, false);
        }
        if (new Date() > token.expirationDate) {
          Token.remove(accessToken, function (err) {
            return done(err);
          });
        }
        if (token.client) {
          var info = { scope: token.client.scopes };
          return done(null, token.client, info);
        }
        else {
          return done(null, false);
        }
      });
    }
  ));

稍后我想阅读客户信息 - 它通过护照done()回调放在req.user键下。 有没有办法获得护照将返回的客户端存储在req.client变量而不是req.user?

我的目标是使用相同的应用程序对用户和客户端进行身份验证,因此我的请求中不会出现冲突的密钥。

感谢

1 个答案:

答案 0 :(得分:1)

您可以在初始化护照时传递用户属性。

app.use(passport.initialize({userProperty:'client')); 

护照将使用此属性存储信息。