2015-01-13 29 views
0

如果我在我的routes.php文件文件这行代码:Laravel路由和CSRF保护

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

我还需要做到这一点?

Route::group(array('before' => 'csrf'), function() { 
    Route::post('/search', array(
     'as' => 'search-post', 
     'uses' => '[email protected]' 
    )); 
}); 

或者可以这样做吗?

Route::post('/search', array(
    'as' => 'search-post', 
    'uses' => '[email protected]' 
)); 
+0

尝试一下我会说! – MisterBla

+0

我怎样才能检查它的工作?我不熟悉CSRF保护。 – rotaercz

+1

从表单中删除CSRF令牌,提交并检查是否出现错误。它应该抛出一个异常。 – MisterBla

回答

3

Route::when过滤器(内部称为模式过滤器)在before过滤器之前被调用。正常使用你的路线你都很好。

下面是相关的源代码:

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

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

正如你可以看到第一个模式过滤器将被调用。如果它们返回任何响应,它将从这里返回,否则过滤器之前的“正常”将被调用。

+0

你回答了我很多问题,我想公开表示感谢。当我启动这个网站的时候,会有一个大喊大叫的部分。我想在那里感谢你。如果我把你添加为lukasgeiter或者你想让我把你的名字放在那里? – rotaercz

+0

非常欢迎:)好吧,“lukasgeiter”其实就是我的名字。如果你愿意的话,你可以把它写成“Lukas Geiter”;) – lukasgeiter

+0

这样做,我会给你一个链接! :) – rotaercz

2

是;你应该安全,只需Route::post('/search', [...]);