Javascript req.user未定义

Javascript req.user未定义,javascript,node.js,authentication,passport.js,restify,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 P

我想用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.user
未定义的
之外,其他一切都可以工作。我了解到,您必须启用会话。但是我已经实现了自己的会话,我不需要另一个会话。
我所需要的是,如果我说
cb(true,user)
它将到达下面的函数


有什么办法解决这个问题吗

我从回调中的代码中得到的
cb
遵循标准节点格式,因此第一个参数是错误,第二个参数是用户。我认为回调是设置req.user和管理所有post auth样板文件的工具。你应该试着把它称为'cb(null,user)

我从来没有使用过这种策略,只使用过本地策略。在本地,您需要一个函数来序列化和反序列化用户。这是Desariaze函数,它为您提供了稍后可通过req.user访问的用户。你不缺少这个函数吗?@yBrodsky,你是对的,这些函数都缺少了。我添加了它们,就像这里描述的那样:但是req.user仍然没有定义。