2016-08-08 9 views
0

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 - - 

答えて

1

によって返さreq.queryあなたがのための認証ヘッダーで見てパスポート-JWTを言っていますJWT、それはあなたがクエリ文字列としてJWTを渡そうとしているようです。

はヘッダを送信してみてください: 認証:「JWT」+トークン

私は実際にあなたが役に立つかもしれません前とそのバックエンドの両方のためのチュートリアルを書きました。

http://blog.slatepeak.com/refactoring-a-basic-authenticated-api-with-node-express-and-mongo/

http://blog.slatepeak.com/build-a-react-redux-app-with-json-web-token-jwt-authentication/

+0

うんは、同じことを考え出しました。しかし、クライアントサイドのヘッダーにトークンを設定しても、私の場合は役に立たなかった。私がしたことは、passport-jwtの使用をやめて、今はjsonwebtokenライブラリのサイン/検証に頼っている – Skaplun

関連する問題