如何从 Laravel 中的请求中获取持有者令牌

2022-08-30 18:42:38

我期望从所有传入请求中获得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"


答案 1

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


答案 2

为了在API调用中从标头获取持有者令牌,我使用了以下方法。它在Laravel 6.6.0中为我工作

$token= request()->bearerToken();

希望这对你有用。

在 Laravel 6.6.0 中使用

注意:如果BearerToken没有显示,那么请交叉检查bearerToken是否在标题中可用。

$header = $this->header('Authorization', '');        
if (Str::startsWith($header, 'Bearer ')) 
{            
     return Str::substr($header, 7);        
}

推荐