Node.js 理解passportjs身份验证方法

Node.js 理解passportjs身份验证方法,node.js,passport.js,Node.js,Passport.js,我很难理解passportjs身份验证方法是如何工作的,尤其是http承载策略 所以我有两条路径,一条用于注册,另一条用于访问用户的配置文件,它通过passportjs中间件。请查看以下代码: exports.register = function(req, res){ User.schema.statics.generateUserToken(function(t){ var user = new User({ token: t, name: 'john d

我很难理解passportjs身份验证方法是如何工作的,尤其是http承载策略

所以我有两条路径,一条用于注册,另一条用于访问用户的配置文件,它通过passportjs中间件。请查看以下代码:

exports.register = function(req, res){
  User.schema.statics.generateUserToken(function(t){
    var user = new User({
      token: t,
      name: 'john doe',
    });

    user.save(function(e){
      res.json(user)
    });
  });
};
我的身份验证策略如下:

var mongoose         = require('mongoose'),
    passport         = require('passport'),
    BearerStrategy   = require('passport-http-bearer').Strategy;

passport.use(new BearerStrategy(
  function(token, done) {
    User.findOne({ token: token }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      return done(null, user, { scope: 'read' });
    });
  }
));
如您所见,当用户请求注册时,我的服务器会将其对象返回给他,并将其标记保存在本地

然后,在受保护的路由中,我添加了passportjs中间件,如下所示:

app.get('/me', passport.authenticate('bearer', { session: false }), routes.me);
很明显我犯了一个未经授权的错误。为什么这是“passport.authenticate从我的客户那里得到令牌?!这真让我困惑,快把我逼疯了。有什么帮助吗


另外,这是进行令牌授权的正确方法吗?或者我还需要一些更详细的信息,比如时间戳、过期日期等?

请参考http Bear的示例代码:重构您的代码库。我认为这是一个非常明确的定义