2016-06-18 23 views
1

ユーザーを認証するためにtaraondesigns/jwt-authを使用してLaravelにapiを構築しました。laravel jwt-authトークンが無効です

私はgithub上のチュートリアルに従い、ログインが正常に動作している:

public function login() { 
     if (!$token = JWTAuth::attempt(Input::only('email', 'password'))) { 
      return response()->json(['error' => true], HttpResponse::HTTP_UNAUTHORIZED); 
     } 

     $user = User::where('email', Input::get('email'))->first(); 

     return response()->json(array(
      'user' => $user, 
      'token' => compact('token')['token']) 
     ); 
    } 

そして、私はトークンを得た応答を。

しかし、私は私が得たTOKEを使用しようとするたび:

[ 
    "Token is invalid" 
] 

すなわち:

public function getUser() { 
     $token = JWTAuth::getToken(); 
     return response()->json(JWTAuth::toUser($token)); 
    } 

これは、ヘッダAuthorization: Bearer {{token}}

私のroutes.phpと{{url}}/api/getUserにGETです以下を含みます。

Route::group(array('prefix' => 'api'), function() { 
    Route::post('/login', 'API\[email protected]'); 
    Route::get('/getUser', ['before' => 'jwt-auth', 'uses' => 'API\[email protected]']); 
}); 

これをトークンで動作させるにはどうすればよいですか?私はここに何かを逃していますか

UPDATE:

私はこのようなトークンを得た:私はhttps://jwt.ioにトークンをチェック

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cL3NtYXJ0YXBwXC9hcGlcL2xvZ2luIiwiaWF0IjoxNDY2Mjc5ODUxLCJleHAiOjE0NjYyODM0NTEsIm5iZiI6MTQ2NjI3OTg1MSwianRpIjoiYjNkZjViZGNiMjQ2YWU0NzVlZDYwODQxMWFlZDNkMTAifQ.pqU0pWKVzmOel51ObyE9vKLk07tefh2lDE-fp-AOavE 

した後、私は、無効な署名を得ました。 なぜ私は署名が無効であり、どうすれば有効にすることができますか?

+0

'routes.php'ファイルの内容は何ですか? – linuxartisan

+0

私の質問にルートを追加しました。編集 –

+0

どのように正確にトークンを渡していますか?あなたはPostmanを使っていますか?トークンは '{{}}'の中括弧なしで渡す必要があります。 – linuxartisan

答えて

1

あなたが使用してユーザーを得ることができるように

は、コンストラクタを定義し、この

public function getUser() { 
    // set the token on the object 

    JWTAuth::parseToken(); 

    // get the user from token 
    $user = JWTAuth::parseToken()->authenticate(); 

    return response()->json(compact('user')); 
} 
+0

と同じ問題です。たとえ私が 'before' => 'jwt-auth'をルートから取ったとしても。私は同じエラーがあります –

+1

どのバージョンのLaravelを使用していますか? @ linuxartisanの答えでミドルウェアを「ミドルウェア」=>「jwt.auth」としてみてください。 –

+0

私はlaravel 5を使用しています。私のルートにはjwt.authがあります。ルート:: get( '/ getUser' '=>' jwt-auth '、'使用 '=>' API \ UserController @ getUser ']);' –

0

はこれを試してみてくださいしてみます$ this-> jwtauth-> TOUSER()を介して、繰り返し実行して、そのクラスアウト関数でJWTAuth $ jwtauthを使用します。

private $jwtauth; 

public function __construct(JWTAuth $jwtauth) 
{ 
    $this->jwtauth = $jwtauth; 
} 

public function getUser() 
{ 
    $user = $this->jwtauth->toUser(); 
    return response($user); 
}