ログイン時にjwt-simple
ノードモジュールを使用してトークンを作成しています。 は私のコードですPassport認証機能がノード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;
}
};
問題は、私は、私はその後、ルートの印刷success:false, msg:'No Token Found'
からパスポート認証機能passport.authenticate('jwt', { session: false})
を削除するときには、Unauthorized
を示すとpostman
に、このAPIを打っていたときに、ということです。 この問題を解決する方法がわかりません。私のコードを見て、私の誤りがどこにあるのか教えてください。
ヘルプありがとうございます。 ありがとう
passport.authenticate( 'jwt'、{session:false})を使用している場合の目的は何ですか?デバッグやログ記録の際にトークンとして与えられるもの。 – Dnyanesh
'passport.authenticate( 'jwt'、{session:false})'がトークンのチェックに有効かどうかを確認しています。しかし、私がルート上でそれを使用しているとき、それは 'Unauthorized'を与えます。それは 'token'が有効でないか、何の意味ですか?私は取得していません –