Laravel禁用特定路由的特定过滤器

时间:2015-03-20 05:52:17

标签: laravel laravel-4

我正在使用Route::when('*', 'csrf', ['post','put'])启用csrf过滤器,现在我有一条不需要csrf过滤器的路由,如何在此路由上禁用过滤器?

Route::post('/process', 'MyController@process'); // I need to disable csrf filter for this route

4 个答案:

答案 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,否则不会应用过滤器。