Laravel自定义中间件开发:如何传入Token并与密钥匹配
Laravel自定义中间件验证Token步骤
1. 创建自定义中间件
运行Artisan命令生成中间件:
php artisan make:middleware VerifyToken
2. 编写Token验证逻辑
打开app/Http/Middleware/VerifyToken.php,在handle方法里实现Token获取与验证:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; class VerifyToken { public function handle(Request $request, Closure $next): Response { // 方式1:从请求头获取(推荐用Authorization Bearer格式) $token = $request->bearerToken(); // 方式2:从请求参数获取(比如?token=xxx) // $token = $request->input('token'); // 方式3:从Cookie获取 // $token = $request->cookie('api_token'); // 从配置文件读取预设密钥(可在.env里设置APP_CUSTOM_TOKEN=your-secret-key) $secretKey = config('app.custom_token'); // 验证Token是否存在且匹配 if (!$token || $token !== $secretKey) { return response()->json(['message' => '无效的Token'], Response::HTTP_UNAUTHORIZED); } return $next($request); } }
3. 注册中间件
打开app/Http/Kernel.php,将中间件添加到$routeMiddleware数组中:
protected $routeMiddleware = [ // ... 其他中间件 'verify.token' => \App\Http\Middleware\VerifyToken::class, ];
4. 使用中间件
单个路由使用
Route::get('/api/protected', function () { return response()->json(['message' => '访问成功']); })->middleware('verify.token');
路由组使用
Route::middleware('verify.token')->group(function () { Route::get('/api/protected', function () { return response()->json(['message' => '访问成功']); }); Route::post('/api/data', function () { return response()->json(['data' => []]); }); });
补充说明
- 推荐用请求头传递Token,格式为
Authorization: Bearer your-secret-key,安全性更高 - 密钥建议存在
.env文件中,然后在config/app.php里添加配置项:'custom_token' => env('APP_CUSTOM_TOKEN'), - 若你的代码有特定Token传递逻辑,可根据实际场景调整获取Token的代码
内容的提问来源于stack exchange,提问作者Lalit Joshi
相关产品推荐
相关产品推荐

