코드에 이상한 버그 또는 오류가 발생했습니다. 노드 서버에 인증 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);
}
});
}));
};
과 같습니다
여권 상관없이 토큰 내가에서 제공 무엇을, 동일한 사용자마다 함께 req.user을 설정하지 않는 이유는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
});
승인 헤더? 감사
고마워, 정말 버그가 아니었다. 나는 몽구스가 'id'대신 '_id'로 모델 ID를 생성한다는 것을 알지 못했다.하지만 어쨌든, 페이로드에있는 유용한 데이터가 다음에 체크 아웃 할 것이다. 나는 그것 덕분에 일한다. :) – BlueBallPanda