禁用csrf认证
全局禁用csrf
在app/Http/Kernel.php
中,$middleware
表示全局中间件,而$routeMiddleware
表示针对某个路由的中间件,所以只需要把csrf在$middleware
中注释掉,然后在$routeMiddleware
中添加'csrf' => 'App\Http\Middleware\VerifyCsrfToken'
如果要在某个路由上使用就这样:
1 | Route::group(['middleware' => 'csrf'], function(){ // csrf保护的接口 |
针对某几个接口单独禁用csrf
可以在app/Http/Middleware/VerifyCsrfToken
的$except
添加,但是这里的添加只能以正则的方式来匹配,不能使用路由别名,如果路由中有参数可以用星号代替
1 | protected $except = [ |
一个页面调用多个接口如何传递CSRF Token
由于csrf
的_token
是存储于session的,依照laravel
的实现机制,同一时间只能有一个_token
,所以无法实现一个页面设置多个csrf token
,要解决这个问题要么将非必要的接口忽略csrf
,要么每次请求api
后从后台生成并返回一个新的token