📅  最后修改于: 2023-12-03 15:02:36.071000             🧑  作者: Mango
在 Laravel 中,CSRF(跨站请求伪造)令牌是用来防止非法访问和攻击的安全机制。然而,有时候我们需要从 CSRF 验证的令牌中排除一些特定的 URI。下面是一个简单的解决方案:
首先,我们需要创建一个 Middleware(中间件)类,命名为 VerifyCsrfTokenExcludedRoutes
。
php artisan make:middleware VerifyCsrfTokenExcludedRoutes
然后,我们需要在 handle()
方法中对要排除的 URI 进行判断。
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfTokenExcludedRoutes extends Middleware
{
public function handle($request, Closure $next)
{
$excludedRoutes = [
'your/excluded/uri',
'another/excluded/uri',
];
foreach ($excludedRoutes as $route) {
if ($request->is($route)) {
return $next($request);
}
}
return parent::handle($request, $next);
}
}
在上面的代码中,我们在 $excludedRoutes
变量中定义了要排除的 URI,然后在循环中进行判断。如果请求的 URI 在排除的列表中,则直接返回相应的回应。否则,将请求传递给原始的 CSRF 验证处理程序。
完成了 Middleware 的编写后,我们需要将其注册到 app/Http/Kernel.php
文件的 protected $middleware
数组中。
protected $middleware = [
// ...
\App\Http\Middleware\VerifyCsrfTokenExcludedRoutes::class,
];
注意,我们将 Middleware 放到了 $middleware
数组中,而不是 $middlewareGroups
数组中的 web
组别。这是因为我们需要在所有的请求中都应用这个 Middleware。
现在,我们已经成功地排除了 CSRF 验证的 URI。就是这么简单!
记得始终保持安全意识,为你的 Laravel 应用程序增加额外的保护措施。