当前位置: 首页> 最新文章列表> Laravel 5.5 关闭CSRF Token防护的三种实现方式

Laravel 5.5 关闭CSRF Token防护的三种实现方式

gitbox 2025-07-07

关闭CSRF Token防护的三种实现方式

关闭基于Token的CSRF防护

在 Laravel 5.5 之前,Laravel 默认启用了基于 Token 的 CSRF 防护,以确保应用程序的安全性。然而,在某些开发场景中,可能需要关闭这种防护,避免额外的复杂性。你可以通过修改 Kernel.php 文件来实现这一目标:

首先,打开 App\Http\Kernel.php 文件,找到 $middlewareGroups 属性中的 web 配置数组,在其中添加如下代码:


protected $middlewareGroups = [
    'web' => [
        // ...
        App\Http\Middleware\VerifyCsrfToken::class => function ($request, $next) {
            return $next($request);
        },
    ],
];

通过将 VerifyCsrfToken::class 中间件定义为一个匿名函数,你就成功关闭了基于 Token 的 CSRF 防护。

关闭路由级别的CSRF防护

如果你只想在某些特定的路由上禁用 CSRF 防护,Laravel 提供了 csrf_exempt 方法,允许你在路由定义中单独关闭 CSRF 防护。例如:


Route::post('/api/posts', [
    'middleware' => 'auth.basic',
    'uses' => 'PostController@store',
])->csrf_exempt();

使用此方法,你可以在指定的路由上禁用 CSRF 防护。

关闭CSRF防护组件

最后,你还可以通过修改 VerifyCsrfToken.php 文件来关闭整个 CSRF 防护组件。文件位于 App\Http\Middleware 目录中,打开该文件并注释掉其 handle 方法中的代码即可:


class VerifyCsrfToken extends Middleware
{
    protected $except = [];

    public function handle($request, Closure $next)
    {
        // return parent::handle($request, $next);
        return $next($request);
    }
}

通过注释掉 parent::handle($request, $next),就可以关闭整个 CSRF 防护组件。

总结

关闭 CSRF 防护虽然可以解决某些开发中的问题,但也可能带来安全隐患。关闭时应谨慎考虑,确保你已经采取了其他安全措施,或者只在开发环境中关闭它。必要时,请备份代码或选择其他更安全的方案。