gpt4 book ai didi

node.js - Node passport-jwt 从 token 中提取错误的用户

转载 作者:搜寻专家 更新时间:2023-10-31 23:41:09 24 4
gpt4 key购买 nike

我在我的代码中遇到了一个奇怪的错误或错误。我在 Node 服务器上设置了一个 auth api,使用 passportjs 作为我的中间件和 passport-jwt 作为我的策略。

我的 Passport 设置是这样的

//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
});

为什么无论我在 Authorization header 中提供什么 Token,passport 每次都将 req.user 设置为同一用户?谢谢

最佳答案

已解决,这条线引起了问题:

User.findOne({
id: jwt_payload.id
...

两个id都应该是_id:)

关于node.js - Node passport-jwt 从 token 中提取错误的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39706014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com