I는 다음과 여권 JWT와 loggedin 사용자의 ID와 토큰을 인코딩 오전 :후 로그인하여 토큰을 디코딩하는 방법 여권 JWT
var JwtStrategy =require('passport-jwt').Strategy;
ExtractJwt = require('passport-jwt').ExtractJwt;
var User =require('../app/models/usermodel');
var config =require('../config/database');
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) {
if (err) {
return done(err, false);
}
if (user) {
done(null, user);
} else {
done(null, false);
}
});
}));
};
및 로그인 경로 API : 이제
apiRoutes.put('/login', function(req, res, next){
User.findOne({email:req.body.email}, function(err, user){
bcrypt.compare(req.body.password, user.password, function(err, result){
if(result){
var token=jwt.encode(user, config.secret);
return res.json({token:token});
}else{
return res.json("Incorrect Email and Password")
}
})
})
});
내가 대시 보드 페이지에 로그인 한 사용자의 정보를 얻고 싶습니다. 하는 동안 나는 토큰을 디코딩하고 아래와 같이 대시 보드 API 경로에 인증을 추가하여 사용자의 모든 정보를 얻으려고 노력하고 있어요 : 내가 튜토리얼에서 발견
apiRoutes.get('/dashboard', passport.authenticate('jwt', { session: false}), function(req, res) {
console.log('User info: ' + req.user._id + '.');
});
이 위의 코드 토큰을 디코딩 할 수 있습니다. 그래서,이 /api/dashboard
url을 클릭하면 브라우저 콘솔에 오류가 표시됩니다.
GET http://localhost:3000/api/dashboard 401 (Unauthorized)
나는 토큰 디코딩 및 사용자 정보를 가져 오는 방법을 모르겠어요. 이 문제를 해결하도록 도와주세요.
감사합니다. 감사합니다.
호출? –
아니요, passport.authenticate()가 쿠키 파서와 동일한 스타일을 따라야 함을 의미합니다. 함수를 반환하십시오. – jiajianrong