【问题标题】:Laravel 4.2 How to remove csrf protection from post route on Laravel 4.2?Laravel 4.2 如何从 Laravel 4.2 的 post 路由中删除 csrf 保护?
【发布时间】:2015-08-03 13:43:25
【问题描述】:

我需要从 Laravel 4.2 上的特定 POST 路由中删除 csrf 保护。

我尝试编辑 csrf 过滤器,但没有成功

有人知道怎么做吗?

【问题讨论】:

  • 你能显示路线代码吗?
  • 是的,当然。 Route::post('create', array('as' => 'create', 'uses' => 'MyController@getIndex'));
  • 这是在 Route::group 内吗?
  • 一开始是这样,但是没用 Route::group(array('prefix' => 'post'), function () { Route::post('create', array ('as' => 'create', 'uses' => 'MyController@getIndex')); });
  • 过滤器设置在哪里?

标签: laravel post csrf protection


【解决方案1】:

在 Laravel 5 中,CSRF 保护默认开启,但在 4.2 中,您必须自己设置 csrf。您所要做的就是传递一个数组作为第二个参数并添加 csrf 过滤器。

例子:

Route::post('create', array(
                            'before' => 'csrf', 
                            'as' =>'create',
                            'uses'=>'MyController@getIndex'
));

这就是您在单条路线上的做法。如果你想在一个小组上做,那将是相似的。

例子:

Route::group(array('before' => 'csrf', 'prefix' => 'post'), function () { 
      // your routes here 
});

由于您不想在路线上使用它,因此您无需对该路线进行任何操作即可。

文档:http://laravel.com/docs/4.2/security#protecting-routes

【讨论】:

  • 我试了,还是不行,还是显示方法不允许httpException
  • 什么时候发生?当你发布到路线?
  • 它是一个外部应用程序,它将 xml 格式的数据发送到我的应用程序的路由帖子。我需要删除该特定路由的 csrf 保护
  • 链接和 Route::post() 上的路由是什么?它们是一样的吗?
  • 如果是 CSRF 问题,它会返回 TokenMismatchException,但你没有得到。
猜你喜欢
  • 2016-07-08
  • 2015-03-11
  • 2018-11-25
  • 2019-01-13
  • 2014-11-06
  • 2015-01-14
  • 2016-01-21
  • 1970-01-01
  • 2016-01-06
相关资源
最近更新 更多