passport-JWTを使用してログインを実装しようとしています。サインアップとログインの両方が正常に動作し、ログイン時にトークンが生成され、クライアントに保存されて返されます。passportjs jwt、クライアントの応答が認証されない
ログイン認証要求がアプリに届いても何も起こりません。 :)
JWT戦略
var JwtStrategy = require('passport-jwt').Strategy,
ExtractJwt = require('passport-jwt').ExtractJwt;
var opts = {}
opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
opts.secretOrKey = 'secret';
opts.issuer = "http://localhost:3000";
opts.audience = "http://localhost:3000";
passport.use('jwt', new JwtStrategy(opts, function(jwt_payload, done) {
console.log(1)
return User
.findOne({where : {username : jwt_payload.email } })
.then(function (user) {
if(user === null){
return TempUser
.findOne({where : {username : jwt_payload.email } })
.then(function(user){
return user === null ?
done(null, false, 'login error, please try again') :
done(null, false, 'email verification needed');
});
} else {
if (bcrypt.compareSync(password, user.dataValues.password)){
done(null, user);
} else {
done(null, false, 'login error, please try again');
}
}
});
}));
ルート
router.get('/login/check', function(req, res, next) {
passport.authenticate('jwt', function(err, user, info) {
console.log(err)
res.json({'success' : true});
})
})
クライアント
GET /login/check?%22eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJzaGFpLmthcGx1bkBnbWFpbC5jb20iLCJwYXN
zd29yZCI6IiQyYSQxMCQ0YXpvSlVLMkltUkl3YWo0Uzlqd1RPVXh0RWIwYWphNW92UjRvUnV1QUFRdnJ5Z3g5cWttNiIsImNyZWF0ZWRBdCI6IjIwMTYtMDg
tMDdUMTM6MjI6NDYuMzUyWiIsInVwZGF0ZWRBdCI6IjIwMTYtMDgtMDdUMTM6MjI6NTkuOTExWiIsImlhdCI6MTQ3MDY1NzY0MCwiZXhwIjoxNDcwNzU3NjQ
wfQ.hyHDcmzJne-d6roRXBgC9aQDeZzQPgpkWWOZicQNc8c%22 - - ms - -
うんは、同じことを考え出しました。しかし、クライアントサイドのヘッダーにトークンを設定しても、私の場合は役に立たなかった。私がしたことは、passport-jwtの使用をやめて、今はjsonwebtokenライブラリのサイン/検証に頼っている – Skaplun