Laravel 8 验证签名路由请求
要验证传入请求是否具有有效签名,你应该对传入的 Request
调用 hasValidSignature
方法:
use Illuminate\Http\Request;
Route::get('/unsubscribe/{user}', function (Request $request) {
if (! $request->hasValidSignature()) {
abort(401);
}
// ...
})->name('unsubscribe');
或者,你可以将 Illuminate\Routing\Middleware\ValidateSignature
中间件分配给路由。如果它不存在,则应该在 HTTP 内核的 routeMiddleware
数组中为此中间件分配一个键:
/**
* 路由中间件
*
* 这些中间件可以分配给组,也可以单独使用
*
* @var array
*/
protected $routeMiddleware = [
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
];
在内核中注册中间件后,你可以将其附加到路由中。如果传入请求没有有效签名,则中间件将自动返回 403
错误响应:
Route::post('/unsubscribe/{user}', function (Request $request) {
// ...
})->name('unsubscribe')->middleware('signed');