为什么不在Laravel中工作组中间件?

时间:2016-07-17 16:30:56

标签: laravel laravel-5.2

我在路由Laravel时使用以下中间件:

Route::group(['middleware' => 'web'], function () {

    Route::resource('Order', 'OrderController');
});

当我尝试在URL中调用此路径时:

http://localhost/web/order

我收到错误:

  

抱歉,找不到您要查找的页面。

     

在RouteCollection.php第161行中   RouteCollection->匹配(对象(请求))在Router.php第821行中   在Router.php第691行中的Router-> findRoute(object(Request))   Router.> dispatchToRoute(object(Request))在Router.php第675行中   Router->在Kernel.php第246行中的dispatch(对象(Request))   Kernel-> Illuminate \ Foundation \ Http {closure}(object(Request))at   Pipeline.php行中的call_user_func(object(Closure),object(Request))   52在Pipeline-> Illuminate \ Routing {closure}(object(Request))in   CheckForMaintenanceMode.php第44行   CheckForMaintenanceMode-> handle(object(Request),object(Closure))at   call_user_func_array(array(object(CheckForMaintenanceMode),'handle'),   在Pipeline.php第136行中的array(object(Request),object(Closure)))   Pipeline-> Illuminate \ Pipeline {closure}(object(Request))at   Pipeline.php行中的call_user_func(object(Closure),object(Request))   32在管道 - > Illuminate \ Routing {closure}(对象(请求))at   Pipeline.php行中的call_user_func(object(Closure),object(Request))   102在Pipeline->然后(对象(Closure))在Kernel.php第132行at   Kernel.php行中的Kernel-> sendRequestThroughRouter(object(Request))   在index.php第53行中的Kernel->句柄(对象(请求))中的99

2 个答案:

答案 0 :(得分:4)

正如其名称所示,

Route::group();用于对共享某些内容的路由进行分组。

'middleware' => 'web'将使所有路由共享同一组中间件或共享相同的中间件。看看app/Http/Kernel.php

中间件不会影响您的路线网址,但会在您的应用中如何处理路线。

'prefix' => 'web'将使您的所有路由共享相同的路径。这更符合您的需求。

正确的代码是:

Route::group(['prefix' => 'web'], function () {
    Route::resource('Order', 'OrderController');
});

访问此路线的网址为:

/web/order

要同时使用前缀web和中间件auth加上后卫api auth:api,代码将为:

Route::group(['prefix' => 'web', 'middleware' => ['auth:api']], function () {
    Route::resource('Order', 'OrderController');
});

答案 1 :(得分:1)

如果您要查找帖子中的网址,则应使用'prefix' => 'web'代替'middleware' => 'web'。默认情况下,Laravel 5.2将所有路由包装在' web'中间件,不必再次申报。

我无法清楚地解释什么是中间件,而不是基于规则来保护某些路线。 Laravel documentation on route prefixes