web-dev-qa-db-ja.com

LaravelのリクエストからBearerトークンを取得する方法

私はすべての着信リクエストからJWTトークンを期待しており、次のようなリクエストヘッダーに含める必要があります:Authorization => 'Bearer: some token here'

私はこのトークンを取得して確認したい:私はしようとしているものです:

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

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

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

質問は、"Authorization: Bearer"を含まないトークンのみを取得する方法があり、もちろん文字列全体を解析してトークンを取得することもできますが、解析せずに取得する別の方法があるかどうか疑問に思っています。

8
user7175325

_Illuminate\Http\Request_オブジェクトにはbearerToken()メソッドがあります。したがって、$token = $request->bearerToken();を実行して、期待どおりに戻すことができるはずです(Laravel 5.5-以前のバージョンがわからない)。

35

次のようなことができます:

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

メソッドbearerToken()が導入されましたLaravel 5.2。以下を使用できます:$token = $request->bearerToken();トークンを取得します。 「Bearer」から別のテキストに変更されたヘッダーを持つヘッダーは、次のように独自の関数を定義できます。

  public function bearerToken()
  {
       $header = $this->header('Authorization', '');
       if (Str::startsWith($header, 'Bearer ')) {
           return Str::substr($header, 7);
       }
  }
0
Plabon Dutta

auth:apiを使用する場合、ガード名「api」を設定する必要はありません

\Auth::guard('api')->getTokenForRequest();
0
the_hasanov

さて、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;_