javascript - req.user 未定义

标签 javascript node.js authentication passport.js restify

我想用 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/

相关文章:

javascript - Socket IO输出次数过多

javascript - 使用 javascript 调用 php 函数

javascript - Opengl, Three.js - 如何绘制圆形太阳

node.js - 在redis中过滤数据

javascript - 基于多个时间戳作为二级索引的 RethinkDB 查询

node.js - 如何使用 .crt 文件在sails.js 中配置https

node.js - react-bootstrap 不包含 css

Azure SWA : redirect to modified version of requested route?

c# - 无法设置 AuthenticationHeaderValue

java - 需要java登录代码的帮助