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

Laravel:创建支持Header静态API令牌的无登录认证API

实现无需登录的静态令牌验证Laravel API

嘿,作为Laravel新手,你的需求完全可以实现!咱们确实能通过静态API令牌 + 请求Header的方式,打造无需用户登录就能访问的基础API。下面我给你一步步拆解实现过程:

1. 配置静态令牌

首先,咱们在项目根目录的.env文件里添加一个安全的静态令牌,比如:

STATIC_API_TOKEN=your-strong-random-token-here

提示:令牌要尽量复杂,你可以用openssl rand -hex 32命令生成一个高强度的随机字符串,别用简单的密码哦!

为了方便在代码里调用,也可以在config/app.php里添加一个配置项:

'static_api_token' => env('STATIC_API_TOKEN'),

2. 创建验证令牌的中间件

Laravel的中间件是处理请求验证的最佳方式,咱们生成一个专门验证静态令牌的中间件:

php artisan make:middleware VerifyStaticToken

打开生成的app/Http/Middleware/VerifyStaticToken.php,修改handle方法,实现令牌验证逻辑:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class VerifyStaticToken
{
    public function handle(Request $request, Closure $next): Response
    {
        // 从请求Header里获取令牌,这里用X-API-Key作为Header键,你也可以换成Authorization: Bearer xxx的形式
        $token = $request->header('X-API-Key');
        
        // 对比静态令牌
        if ($token !== config('app.static_api_token')) {
            return response()->json([
                'message' => '无效的API令牌'
            ], Response::HTTP_UNAUTHORIZED);
        }

        return $next($request);
    }
}

如果想用Authorization: Bearer <token>的格式,把上面的$token = $request->header('X-API-Key');改成:

$token = str_replace('Bearer ', '', $request->header('Authorization'));

3. 注册中间件

打开app/Http/Kernel.php,在routeMiddleware数组里注册咱们的中间件:

protected $routeMiddleware = [
    // ... 其他中间件
    'static.token' => \App\Http\Middleware\VerifyStaticToken::class,
];

4. 在路由中使用中间件

现在就可以给需要验证的API路由加上这个中间件了,比如在routes/api.php里:

use App\Http\Controllers\YourController;

Route::get('/public/data', [YourController::class, 'getData'])->middleware('static.token');

5. 测试API

用Postman、curl或者前端请求时,在Header里带上你的令牌:

  • 如果用X-API-Key:X-API-Key: your-strong-random-token-here
  • 如果用Bearer格式:Authorization: Bearer your-strong-random-token-here

发送请求后,只要令牌正确就能访问接口;如果令牌错误或缺失,会返回401未授权的响应。

额外注意事项

  • 一定要把.env文件加入版本控制的忽略列表(比如.gitignore),避免令牌泄露
  • 如果需要支持多个客户端的不同令牌,可以把令牌存在数据库里,然后在中间件里查询验证,这是进阶玩法,新手先从静态令牌入手就好
  • 可以根据需求调整中间件的错误响应内容,让它更贴合你的业务场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:08:14