Passport-JWT自定义授权

时间:2016-06-05 07:01:55

标签: javascript node.js passport.js

我正在使用Passport-jwt来授权用户,但是我很难找到一种方法来获取任何类型的自定义响应,以防丢失或丢失令牌。在正确令牌的情况下,它全部通过并继续该方法。但是,如果令牌丢失/丢失,我总是得到401响应,但没有选择回馈任何自定义消息/信息。

以现实世界为例

我想要的是一些自定义逻辑,或者

1)你没有给出任何代币

2)是的,你给了一个令牌,但没有正确解码,所以你做了

我的代码

var JwtStrategy = require('passport-jwt').Strategy,
    ExtractJwt = require('passport-jwt').ExtractJwt;

var User = require('../app/models/user');
var config = require('./config');  

module.exports = function(passport) {
  var opts = {};
  opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
  opts.secretOrKey = config.secret;
  passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    User.findOne({id: jwt_payload.id}, function(err, user) {
      console.log(jwt_payload);
          if (err) {
              console.log("err : " + err);
              return done(err, false);
          }
          if (user) {
              console.log("user : " + user);
              done(null, user);
          } else {
              console.log("No User");
              done(null, false);
          }
      });
  }));
};

然后我将此用于每个请求。

apiRoutes.get('/test', passport.authenticate('jwt', { session: false}), function(err, user, info) {
  res.json({ message: 'All Good!' });
});

0 个答案:

没有答案