📜  Laravel 从 csrf 令牌验证中排除 URI - PHP (1)

📅  最后修改于: 2023-12-03 15:02:36.071000             🧑  作者: Mango

Laravel 从 CSRF 令牌验证中排除 URI

在 Laravel 中,CSRF(跨站请求伪造)令牌是用来防止非法访问和攻击的安全机制。然而,有时候我们需要从 CSRF 验证的令牌中排除一些特定的 URI。下面是一个简单的解决方案:

步骤1:创建 Middleware

首先,我们需要创建一个 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 验证处理程序。

步骤2:注册 Middleware

完成了 Middleware 的编写后,我们需要将其注册到 app/Http/Kernel.php 文件的 protected $middleware 数组中。

protected $middleware = [
    // ...
    \App\Http\Middleware\VerifyCsrfTokenExcludedRoutes::class,
];

注意,我们将 Middleware 放到了 $middleware 数组中,而不是 $middlewareGroups 数组中的 web 组别。这是因为我们需要在所有的请求中都应用这个 Middleware。

结论

现在,我们已经成功地排除了 CSRF 验证的 URI。就是这么简单!

记得始终保持安全意识,为你的 Laravel 应用程序增加额外的保护措施。