【问题标题】:How to Remove Filter from Some of My Routes Laravel 4.2如何从我的一些路线中删除过滤器 Laravel 4.2
【发布时间】:2016-04-30 04:53:33
【问题描述】:

我的项目有路线,我正在使用Route::when('*', 'auth') 来保护我的路线,方法是在每条路线上实施auth filter,如下所示:

// All the following routes must be filtered by the 'auth' filter.
Route::when('*', 'auth');

Route::resource('route_1', 'Controller_1);
Route::controller('route_2', 'Controller_2');
Route::get('route_3', 'Controller_3@method_1');

很明显,用户无法以访客身份访问路由,换句话说,无需登录。

现在我要使用几条无需登录即可访问的路线。我正在使用以下代码,但它不起作用并且还在route_0 上实现auth filter

// Following two routes must not be filtered by the 'auth' filter.
Route::get('route_0', 'Controller_0@getMethod');
Route::post('route_0', 'Controller_0@postMethod');

// All the following routes must be filtered by the 'auth' filter.
Route::when('*', 'auth');

Route::resource('route_1', 'Controller_1);
Route::controller('route_2', 'Controller_2');
Route::get('route_3', 'Controller_3@method_1');

如何从route_0 中删除auth filter?我也不想在每个routecontroller 上分别使用auth filter。请问有什么解决办法吗?

【问题讨论】:

    标签: php laravel laravel-4 laravel-5 laravel-routing


    【解决方案1】:

    你可以像下面这样使用路由组

    Route::get('/',  array('as' => 'home','uses' => 'HomeController@index'));
    
    Route::group(array('before' =>'auth'), function()
    {
     Route::get('about',  array('as' => 'about','uses' => 'HomeController@about'));
    }
    );
    

    将需要过滤的路由放在组内,其他放在外面。您也可以使用多个组。

    你可以在这里阅读它https://laravel.com/docs/4.2/routing#route-filters

    【讨论】:

      【解决方案2】:

      您可以使用使用给定路由过滤器的路由组。

      Route::group(['before' => ['auth']], function() {
          Route::resource('route_1', 'Controller_1');
          Route::controller('route_2', 'Controller_2');
          Route::get('route_3', 'Controller_3@method_1');
      });
      // Other non filtered routes.
      

      文档:https://laravel.com/docs/4.2/routing#route-filters

      注意:在 Laravel 5.* 中,我们不再使用过滤器,而是使用中间件:https://laravel.com/docs/master/middleware

      【讨论】:

        【解决方案3】:

        您可以使用whenRegex 代替when 并在应用过滤器时将路由路径排除在匹配之外:

        Route::whenRegex('/^((?!route_0).)*$/', 'auth');
        

        【讨论】:

          猜你喜欢
          • 2015-08-03
          • 2016-01-21
          • 2019-02-25
          • 2014-09-05
          • 2015-01-14
          • 2019-12-04
          • 1970-01-01
          • 2018-10-27
          • 1970-01-01
          相关资源
          最近更新 更多