req.user未定义

时间:2017-09-14 12:16:46

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

我想编写一个带有NodeJS + Restify和PassportJS的REST-API进行身份验证。 当用户登录时,我生成一个sessionId并将其存储在我自己创建的会话中。

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.userundefined。我读过,你必须启用会话。但我已经实施了自己的会议,我不需要另外一个会议 我需要的是,如果我说cb( true, user )它到达下面的函数。

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

当我从this example中的代码中得到回调cb时,它遵循标准节点格式,因此作为第一个参数获取错误,将用户作为第二个参数。我认为回调就是设置req.user并管理所有post-auth样板文件。您应该尝试将其称为`cb(null,user)