我正在实施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?
我的目标是使用相同的应用程序对用户和客户端进行身份验证,因此我的请求中不会出现冲突的密钥。
感谢
答案 0 :(得分:1)
您可以在初始化护照时传递用户属性。
app.use(passport.initialize({userProperty:'client'));
护照将使用此属性存储信息。