Laravel路由和CSRF保护

时间:2015-01-13 20:24:27

标签: php laravel csrf

如果我在routes.php文件中有这行代码:

Route::when('*', 'csrf', array('post', 'put', 'patch', 'delete'));

我还需要这样做吗?

Route::group(array('before' => 'csrf'), function() {
    Route::post('/search', array(
        'as' => 'search-post',
        'uses' => 'SearchController@postSearch'
    ));
});

或者可以这样做吗?

Route::post('/search', array(
    'as' => 'search-post',
    'uses' => 'SearchController@postSearch'
));

2 个答案:

答案 0 :(得分:3)

Route::when过滤器之前调用

before过滤器(内部称为模式过滤器)。只是正常使用您的路线,你一切都很好。

以下是相关的源代码:

public function callRouteBefore($route, $request)
{
    $response = $this->callPatternFilters($route, $request);

    return $response ?: $this->callAttachedBefores($route, $request);
}

如您所见,首先会调用模式过滤器。如果他们返回任何回复,它将从这里返回,否则"正常"在调用过滤器之前。

答案 1 :(得分:2)

是;只有Route::post('/search', [...]);才能安全。