首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 8-如何实现简单的API密钥身份验证

Laravel 8-如何实现简单的API密钥身份验证
EN

Stack Overflow用户
提问于 2021-11-03 16:50:41
回答 1查看 1.2K关注 0票数 1

我正在尝试在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包的情况下实现这个简单的身份验证系统?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-03 17:10:05

只需使用middleware即可。在config/app.php中添加密钥

代码语言:javascript
运行
复制
[
  'api_key' => env('API_KEY'),
]

创建中间件并将其添加到App\Http\Kernel

代码语言:javascript
运行
复制
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');
    }
  }
}
代码语言:javascript
运行
复制
class Kernel extends HttpKernel
{
  protected $middlewareGroups = [
        'api' => [
            App\Http\Middleware\ApiKeyMiddleware::class
            'throttle:300,1',
            'bindings',
        ],
  ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69828737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档