我在路由Laravel时使用以下中间件:
Route::group(['middleware' => 'web'], function () {
Route::resource('Order', 'OrderController');
});
当我尝试在URL中调用此路径时:
http://localhost/web/order
我收到一个错误:
Sorry, the page you are looking for could not be found.
in RouteCollection.php line 161 at
RouteCollection->match(object(Request)) in Router.php line 821 at
Router->findRoute(object(Request)) in Router.php line 691 at
Router->dispatchToRoute(object(Request)) in Router.php line 675 at
Router->dispatch(object(Request)) in Kernel.php line 246 at
Kernel->Illuminate\Foundation\Http{closure}(object(Request)) at
call_user_func(object(Closure), object(Request)) in Pipeline.php line
52 at Pipeline->Illuminate
outing{closure}(object(Request)) in
CheckForMaintenanceMode.php line 44 at
CheckForMaintenanceMode->handle(object(Request), object(Closure)) at
call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'),
array(object(Request), object(Closure))) in Pipeline.php line 136 at
Pipeline->Illuminate\Pipeline{closure}(object(Request)) at
call_user_func(object(Closure), object(Request)) in Pipeline.php line
32 at Pipeline->Illuminate
outing{closure}(object(Request)) at
call_user_func(object(Closure), object(Request)) in Pipeline.php line
102 at Pipeline->then(object(Closure)) in Kernel.php line 132 at
Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line
99 at Kernel->handle(object(Request)) in index.php line 53
顾名思义,Route::group();用于对共享共同点的路由进行分组。
'middleware' => 'web'将使内部的所有路由共享同一组中间件或共享同一中间件。 看app/Http/Kernel.php。
中间件不会影响您的路线URL,但会影响您应用中路线的处理方式。
'prefix' => 'web'将使您的所有路由共享同一路径。 看起来更符合您的需求。
正确的代码将是:
Route::group(['prefix' => 'web'], function () {
Route::resource('Order', 'OrderController');
});
访问此路由的URL将是:
/web/order
要同时具有前缀web和中间件auth和保护api auth:api,代码应为:
Route::group(['prefix' => 'web', 'middleware' => ['auth:api']], function () {
Route::resource('Order', 'OrderController');
});
如何在此处添加Auth? 类似于:Route::group中的"middleware" =>"auth:api"
我也试过这个:Route::group([prefix => api], function () { Route::resource(Order, OrderController); });
auth是用于身份验证的中间件,api是用于在configauth.php中定义的保护配置。 添加middleware => [auth:api]可以满足您的要求。
如果要查找帖子中的URL,则应使用'prefix' => 'web'而不是'middleware' => 'web'。 默认情况下,Laravel 5.2将所有路由包装在"网络"中间件中,而无需再次声明。
我不能清楚地解释什么是中间件,除了中间件基于适当的规则来保护某些路由外。
Laravel有关路由前缀的文档
但是,如果我需要使用auth添加中间件?
Route :: group([前缀=>网络,中间件=> [auth,api]],函数(){}