Laravel 7 Validation是否支持验证Authorization标头中的值



我想验证Authorization Bearer HTTP请求标头中的令牌。我知道Laravel有Validation功能,可以用来验证在请求正文部分传递的参数。

它是否也有一种方法来验证某些HTTP标头中的值,或者我应该只使用中间件来验证?

感谢

如果您使用Laravel默认的token_api作为api保护,只需确保您的用户模型继承自IlluminateFoundationAuthUser

阅读关于Laravel如何在vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php中验证Bearer Token的资源代码

public function getTokenForRequest()
{
$token = $this->request->query($this->inputKey);
if (empty($token)) {
$token = $this->request->input($this->inputKey);
}
if (empty($token)) {
$token = $this->request->bearerToken();
}
if (empty($token)) {
$token = $this->request->getPassword();
}
return $token;
}

您可以看到,Laravel将首先检查请求是否具有api_tokeninputKey。因此,您可以添加一个中间件来验证授权。也许默认的auth:api对它来说已经足够了

Route::middleware('auth:api')->group(function(){
...
});

但是使用api_token作为你的api保护程序对你的应用程序来说是不安全的,也许你应该使用Sanctum而不是它。

相关内容

  • 没有找到相关文章

最新更新