我正在使用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!' });
});