jwt-simple
노드 모듈을 사용하여 로그인 할 때 토큰을 생성 중입니다. 아래의 은 내 코드입니다.Passport Authenticate 기능이 노드 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")
}
})
})
});
토큰이 성공적으로 작성됩니다. 이제 /dashboard
경로에서 사용자를 인증하려고합니다.
apiRoutes.get('/dashboard', passport.authenticate('jwt', { session: false}), function(req, res) {
var token=getToken(req.headers);
if(token){
var decode=jwt.decode(token, config.secret);
User.findOne({name:decode.name}, function(err, user){
if(err){res.json(err)}
if(!user){
return res.status(403).send({success:false, msg:'Authentication Failed'})
}else{
res.json({success:true, msg:'Welcome in the Area' +user.name+'!'})
}
})
}else{
return res.status(403).send({success:false, msg:'No Token Found'})
}
});
getToken = function (headers) {
if (headers && headers.authorization) {
var parted = headers.authorization.split(' ');
if (parted.length === 2) {
return parted[1];
} else {
return null;
}
} else {
return null;
}
};
문제는 내가 postman
에이 API를 타격하고 때 그것의 Unauthorized
을 보여주고 그때 경로에서 여권 인증 기능 passport.authenticate('jwt', { session: false})
를 제거 할 때 그 success:false, msg:'No Token Found'
를 인쇄하는 것입니다. 이 문제를 해결하는 방법을 모르겠습니다. 제 코드를보고 제 잘못이 어디 있는지 알려주십시오.
감사합니다. 감사합니다.
passport.authenticate ('jwt', {session : false})를 사용하면 어떤 목적이 있습니까? 그리고 그것을 디버깅하거나 기록 할 때 토큰으로 제공되는 것. – Dnyanesh
'passport.authenticate ('jwt', {session : false})'가 토큰이 유효한지 확인하는 데 사용하고 있습니다. 그러나 내가 그 길에서 그것을 사용할 때 그 사람은'Unauthorized'를줍니다. 즉'token'이 유효하지 않거나 무엇을 의미합니까 ??? 나는 얻지 못한다 –