You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8 如何实现无需Passport/Sanctum的简单API密钥认证

Laravel 8 极简API密钥验证实现方案

以下方案无需引入Passport、Sanctum等扩展包,仅通过自定义中间件即可实现需求:

1. 创建自定义验证中间件

执行Artisan命令生成中间件文件:

php artisan make:middleware VerifyApiKey

打开生成的app/Http/Middleware/VerifyApiKey.php文件,替换为以下代码:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class VerifyApiKey
{
    public function handle(Request $request, Closure $next)
    {
        // 读取配置中硬编码的合法API密钥
        $validApiKey = config('app.apikey');
        // 校验URI参数中的apikey是否合法
        if ($request->query('apikey') !== $validApiKey) {
            return response()->json(['message' => 'Unauthorized'], 401);
        }
        return $next($request);
    }
}

2. 注册中间件

打开app/Http/Kernel.php文件,找到$middlewareGroups属性下的api分组,追加刚才创建的中间件,即可让所有API路由默认启用验证:

protected $middlewareGroups = [
    'api' => [
        'throttle:api',
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        // 新增API密钥验证中间件
        \App\Http\Middleware\VerifyApiKey::class,
    ],
];

如果仅需要给部分API路由添加验证,可将中间件注册到$routeMiddleware属性中:

protected $routeMiddleware = [
    // 原有其他中间件
    'verify.apikey' => \App\Http\Middleware\VerifyApiKey::class,
];

之后在路由文件中手动给指定路由添加->middleware('verify.apikey')即可。

3. 配置硬编码API密钥

打开项目根目录下的.env文件,新增一行配置自定义的API密钥:

API_KEY=你自定义的随机字符串密钥

打开config/app.php配置文件,新增配置项关联.env配置:

'apikey' => env('API_KEY'),

注意事项

  • 该方案仅适用于非生产环境原型测试,生产环境禁止将API密钥放在URI参数中,会被访问日志记录引发泄露风险。
  • 硬编码密钥不要直接写在代码文件中,通过.env配置管理避免提交到代码仓库泄露。

内容的提问来源于stack exchange,提问作者Jacques

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:09:00