我想验证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_token
的inputKey
。因此,您可以添加一个中间件来验证授权。也许默认的auth:api
对它来说已经足够了
Route::middleware('auth:api')->group(function(){
...
});
但是使用api_token
作为你的api保护程序对你的应用程序来说是不安全的,也许你应该使用Sanctum而不是它。