我正在尝试在Laravel 8中为我的API实现一个非常简单的原型(非生产)身份验证系统。我的目标是让任何使用硬编码API密钥的用户都能够使用端点。否则,它们将在所有端点上收到401错误。用户必须包含API密钥作为URI参数,格式如下例所示:
'hostAddress'/api/endpoint1?apikey='APIkey'
其中'hostAddress‘表示主机ipv6地址,'APIkey’表示硬编码的API密钥。
我对这个问题所做的每一次搜索都指向Laravel8文档(https://laravel.com/docs/8.x/authentication)。但是,文档中的身份验证解决方案比我所寻找的要复杂得多。
如何在不使用复杂的Laravel包的情况下实现这个简单的身份验证系统?
发布于 2021-11-03 17:10:05
只需使用middleware即可。在config/app.php中添加密钥
[
'api_key' => env('API_KEY'),
]
创建中间件并将其添加到App\Http\Kernel
namespace App\Http\Middleware;
class ApiKeyMiddleware
{
public function handle($request, Closure $next)
{
if(!$key = $request->get('apikey') or $key !== config('app.api_key'){
throw new AuthenticationException('Wrong api key');
}
}
}
class Kernel extends HttpKernel
{
protected $middlewareGroups = [
'api' => [
App\Http\Middleware\ApiKeyMiddleware::class
'throttle:300,1',
'bindings',
],
]
}
https://stackoverflow.com/questions/69828737
复制相似问题