2017-11-07 5 views
0

私はすべての着信要求からJWTトークンを期待していて、それはのようなリクエストヘッダに含まれるべきでリクエストからベアラトークンを取得する方法:Authorization => 'Bareer: some token hereLaravel

が、私はこのトークンを取得し、それを検証したいです。ここで私がしようとしていますものです:

$token = $request->header('Authorization'); 

を、これは私が得るものです:

"Authorization: Bearer: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJleGFtcGxlLm9yZyIsImF1ZCI6ImV4YW1wbGUuY29tIiwiaWF0IjoxMzU2OTk5NTI0LCJuYmYiOjEzNTcwMDAwMDB9.UQUJV7KmNWPiwiVFAqr4Kx6O6yd69lfbtyWF8qa8iMN2dpZZ1t6xaF8HUmY46y9pZN76f5UMGA0p_CMqymRdYfNiKsiTd2V_3Qpt9LObaLg6rq18j3GLHfdr8nyBzO3v7gTpmNaU6Xy47aMDsbcs593Lx_lD3PnO41oEHgih7CsRKW1WcW1radnpEhdDO7-GpmGOF6xUnpAlQ9EHqpqnIlZPbVoJg92Iwozn-07uuWrkyKUpYN4IPpstd1ks3cKlJ6FH-2ROiC4N0MVLxp4lhUyKhLdwgDWYH4tjtdrEVK0a3_zVtK1ukvriEJqMkfYHnE6Bwv_pv_-lRNy_y7m-YQ" 

質問は"Authorization: Bearer"を含むだけでなく、トークンをつかむためにどのような方法があります もちろん、文字列全体を解析してトークンを取得することもできますが、解析することなく別の方法があるかどうかは疑問です。

+0

https://github.com/tymondesigns/jwt-authを使用していますか? –

+0

Laravelにはこれを得るための組み込みメソッドがありませんが、文字列を自分自身で解析したくない場合に使用できるパッケージがたくさんあります。文字列を解析したいが、必要な他の機能もあるため)。 – apokryfos

+0

@MatthewDalyいいえ何らかの理由でrs256暗号化で動作しないので、私はそのパッケージを使用していません。私はfirebaseを使用して署名し、公開鍵/秘密鍵を使ってトークンを非常に使います –

答えて

0

よくsubstr()php関数を使ってトークンだけを取得することができます。

$string = "Authorization: Bearer: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJleGFtcGxlLm9yZyIsImF1ZCI6ImV4YW1wbGUuY29tIiwiaWF0IjoxMzU2OTk5NTI0LCJuYmYiOjEzNTcwMDAwMDB9.UQUJV7KmNWPiwiVFAqr4Kx6O6yd69lfbtyWF8qa8iMN2dpZZ1t6xaF8HUmY46y9pZN76f5UMGA0p_CMqymRdYfNiKsiTd2V_3Qpt9LObaLg6rq18j3GLHfdr8nyBzO3v7gTpmNaU6Xy47aMDsbcs593Lx_lD3PnO41oEHgih7CsRKW1WcW1radnpEhdDO7-GpmGOF6xUnpAlQ9EHqpqnIlZPbVoJg92Iwozn-07uuWrkyKUpYN4IPpstd1ks3cKlJ6FH-2ROiC4N0MVLxp4lhUyKhLdwgDWYH4tjtdrEVK0a3_zVtK1ukvriEJqMkfYHnE6Bwv_pv_-lRNy_y7m-YQ"; 

$token = substr($string, 23);

echo $token;

+0

私はrepsonseを解析したくないと言いました... –

0

あなたのような何かを行うことがありますが、認証を使用する場合

$response = explode(':', $request->header('Authorization')); 
$token = trim($response[2]); 
0

を:APIがセットガード名 'APIに'

\Auth::guard('api')->getTokenForRequest(); 
を必要としません。
1

Illuminate\Http\RequestオブジェクトにbearerToken()メソッドがあるので、$token = $request->bearerToken();を実行して、期待どおりの結果を得ることができるはずです(これはLaravel 5.5です - 以前のバージョンはわかりません)。

+0

本当に存在すれば素晴らしいでしょう –

+0

存在します。 [リクエストベアラトークン](https://laravel.com/api/5.5/Illuminate/Http/Request.html#method_bearerToken) – Isaiahiroko