當前位置: 首頁> 最新文章列表> 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 防護雖然可以解決某些開發中的問題,但也可能帶來安全隱患。關閉時應謹慎考慮,確保你已經採取了其他安全措施,或者只在開發環境中關閉它。必要時,請備份代碼或選擇其他更安全的方案。