PHP不能使用的中间件,为什么Laravel中不能使用组中间件?

我在路由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]],函数(){}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值