如何从Laravel中的请求中获取Bearer令牌

8 php jwt laravel

我期待来自所有传入请求的JWT令牌,它应该包含在请求标头中,如: Authorization => 'Bearer: some token here'

我想得到这个令牌并验证它:这是我正在尝试的:

$token = $request->header('Authorization');
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

"Authorization: Bearer: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJleGFtcGxlLm9yZyIsImF1ZCI6ImV4YW1wbGUuY29tIiwiaWF0IjoxMzU2OTk5NTI0LCJuYmYiOjEzNTcwMDAwMDB9.UQUJV7KmNWPiwiVFAqr4Kx6O6yd69lfbtyWF8qa8iMN2dpZZ1t6xaF8HUmY46y9pZN76f5UMGA0p_CMqymRdYfNiKsiTd2V_3Qpt9LObaLg6rq18j3GLHfdr8nyBzO3v7gTpmNaU6Xy47aMDsbcs593Lx_lD3PnO41oEHgih7CsRKW1WcW1radnpEhdDO7-GpmGOF6xUnpAlQ9EHqpqnIlZPbVoJg92Iwozn-07uuWrkyKUpYN4IPpstd1ks3cKlJ6FH-2ROiC4N0MVLxp4lhUyKhLdwgDWYH4tjtdrEVK0a3_zVtK1ukvriEJqMkfYHnE6Bwv_pv_-lRNy_y7m-YQ"
Run Code Online (Sandbox Code Playgroud)

问题是有没有办法只抓取不包括的令牌"Authorization: Bearer" ,当然我可以解析整个字符串并获得令牌,但我只是想知道是否有另一种方法来获得它而不解析.

Bar*_*kes 35

bearerToken()Illuminate\Http\Request对象上有一个方法,所以你应该能够做到$token = $request->bearerToken();并取回你的期望(在Laravel 5.5中 - 我不确定以前的版本).

  • 它确实存在。[请求承载令牌](https://laravel.com/api/5.5/Illuminate/Http/Request.html#method_bearerToken) (2认同)

Cha*_*rma 8

为了从 API 调用中的 Header 获取 Bearer 令牌,我使用了以下方法。它在 Laravel 6.6.0 中对我有用

$token= request()->bearerToken();
Run Code Online (Sandbox Code Playgroud)

希望这对你有用。

在 Laravel 6.6.0 中使用


Raz*_*hdi 1

你可以这样做:

$response = explode(':', $request->header('Authorization'));
$token = trim($response[2]);
Run Code Online (Sandbox Code Playgroud)