我遇到了一個奇怪的錯誤或代碼錯誤。 我已經在節點服務器上設置了auth api,使用passportjs作爲我的中間件,passport-jwt作爲我的策略。節點passport-jwt從令牌中提取錯誤的用戶
我的護照的設置是這樣
//add jwt strategy to passport
var JwtStrategy = require('passport-jwt').Strategy;
var ExtractJwt = require('passport-jwt').ExtractJwt;
var User = require('../models/user');
var configDB = require('../config/database');
module.exports = function(passport) {
var opts = {};
opts.secretOrKey = configDB.secret;
opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
//find user with give jwt payload id
User.findOne({
id: jwt_payload.id
}, function(err, user) {
if(err) {
return done(err, false);
}
if(user) {
done(null, user);
} else {
done(null, false);
}
});
}));
};
然後,我的保護途徑:
apiRoutes.get('/account', passport.authenticate('jwt', {session: false}), function(req, res) {
console.log(req.user.nickname); //returns user1 no matter what JWT I supply with request
console.log(jwt.decode(getToken(req.headers), configDB.secret)).nickname; //decodes user from token correctly
..do other stuff
});
爲什麼護照套req.user使用相同的用戶每次,不管我的令牌供應授權標題? 感謝
謝謝,這不是一個真正的bug,我只是沒有意識到貓鼬生成的模型ID爲'_id'而不是'id'...但無論如何,有效載荷中的一些真正有用的數據,將在下次檢查出來我與它合作謝謝:) – BlueBallPanda