我正在使用Route::when('*', 'csrf', ['post','put'])
启用csrf过滤器,现在我有一条不需要csrf过滤器的路由,如何在此路由上禁用过滤器?
Route::post('/process', 'MyController@process'); // I need to disable csrf filter for this route
答案 0 :(得分:0)
我不确定,但你是否尝试过这样做:
Route::post('/process', array('before' => '', 'uses' => 'MyController@process'));
答案 1 :(得分:0)
最简单的方法是在路线文件中执行此操作:
Route::post('/process', 'MyController@process');
Route::group(['before' => 'csrf'], function () {
// All your other routes here
});
答案 2 :(得分:0)
似乎我可以在Route::when
中使用Route::whenRegex
或使用Route::filter('mycsrf', function($route, $request) {
// check excluded routes
if ($route->getName() == 'route.name')
return;
// call original csrf filter
Route::callRouteFilter('csrf', [], $route, $request);
});
Route::when('*', 'mycsrf', ['post', 'put']);
为路径路径指定正则表达式,或者创建我自己的过滤器以便我可以检查要排除的路径:
{{1}}
答案 3 :(得分:0)
另一种方法是处理\BaseController
中的过滤器而不是路径本身。
$this->afterFilter('@pushUpdateToSqsQueue', ['on'=>'post', 'except' =>
['postToggle']
]
);
以上内容将自定义after
过滤器应用于POST
到我的控制器或扩展它的控制器类中的任何端点的所有路由。
除非我发布的方法是postToggle
,否则不会应用过滤器。