我想用 NodeJS+Restify 和 PassportJS 编写一个 REST-API 来进行身份验证。 当用户登录时,我生成一个 sessionId 并将其存储在我自己创建的 session 中。
var Passport = require( 'passport' );
var PassportBearerStrategy = require('passport-http-bearer').Strategy;
// Authentication
Passport.use( new PassportBearerStrategy( function( sessionId, cb ) {
Auth.getSession( sessionId, function( userId ){
cb( ( !!userId ), { userId: userId }, userId );
});
}));
server.get(
'/user',
Passport.authenticate( 'bearer' ),
function( req, res, next ){
console.info( req.user ); // undefined
respond( res, {} );
return next();
}
);
一切正常,除了在下面的函数中,req.user
是未定义
。我读到,你必须启用 session 。但我已经实现了自己的 session ,我不需要另一个 session 。
我所需要的是,如果我说 cb( true, user )
它会到达下面的函数。
有什么办法可以解决这个问题吗?
最佳答案
正如我从this example中的代码中得到的那样回调cb
遵循标准 Node 格式,因此将错误作为第一个参数,将用户作为第二个参数。我认为回调是设置 req.user 并管理所有授权后样板的内容。您应该尝试将其称为“cb(null, user)”
关于javascript - req.user 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46218897/