【问题标题】:understanding passportjs authenticate method了解passportjs认证方法
【发布时间】:2015-01-07 16:27:29
【问题描述】:

我很难理解 passportjs 身份验证方法的工作原理,尤其是使用 http-bearer 策略。

所以我有两条路线,一条用于注册,一条用于访问用户的个人资料,通过 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 从我的客户那里获取令牌的地方?!这对我来说真的很困惑,让我发疯。有什么帮助吗?

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

【问题讨论】:

    标签: node.js passport.js


    【解决方案1】:

    您能否参考 http-bearer 的示例代码:https://github.com/jaredhanson/passport-http-bearer/blob/master/examples/bearer/app.js 来重构您的代码库。我认为这里的定义非常明确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 2011-06-25
      • 2017-01-31
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      相关资源
      最近更新 更多