Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在控制器';拉维尔的建筑工人?_Php_Laravel_Middleware - Fatal编程技术网

Php 如何在控制器';拉维尔的建筑工人?

Php 如何在控制器';拉维尔的建筑工人?,php,laravel,middleware,Php,Laravel,Middleware,Kernel.php 'admin'=>\App\Http\Middleware\admin::class, “超级管理员”=>\App\Http\Middleware\SuperAdmin::class, 'seller'=>\App\Http\Middleware\seller::class, 我已经创建了三个不同的middlewere。下面是kernel.php 例如,我想让这三个用户都可以访问仪表板管理员,超级管理员和卖家 DashboardController.php 函数uuu构造

Kernel.php

'admin'=>\App\Http\Middleware\admin::class,
“超级管理员”=>\App\Http\Middleware\SuperAdmin::class,
'seller'=>\App\Http\Middleware\seller::class,
我已经创建了三个不同的
middlewere
。下面是
kernel.php

例如,我想让这三个用户都可以访问仪表板<代码>管理员,
超级管理员
卖家

DashboardController.php

函数uuu构造()
{
$this->middleware(['super_admin','admin','seller']);
}
但是这个多个中间件不起作用

没有错误,但我无法访问管理路由

单曲完美

参考资料

web.php

Route::get('admin','DashboardController@index')->name('dashboard.index');
路由::get('admin/shops','DashboardController@shops')->name('dashboard.shops');

我终于解决了这些问题

特别感谢RemulPilanbro提供的宝贵参考资料。 第一步
Middlewere/AdminPanel.php

公共函数句柄($request,Closure$next,$super\u adminRole,$adminRole,$sellerRole)
{
$roles=Auth::check()?Auth::user()->role->pull('name')->toArray():[];
if(在数组中($super\u adminRole,$roles)){
返回$next($request);
}else if(在_数组中($adminRole,$roles)){
返回$next($request);
}else if(在数组中($sellerRole,$roles)){
返回$next($request);
}
返回重定向::路由('home');
}
角色
表中有3个角色<代码>超级管理员,
管理员
卖家

在数组中,
$roles
包含这些角色

因此,在
if
条件中,与
null
相比,null将给出
false
,因此该条件将不满足

步骤2
Kernel.php

protected$routeMiddleware=[
“adminPanel”=>\App\Http\Middleware\adminPanel::class,
];
步骤3
DashboardController.php

4种变体
函数uuu构造()
{
$this->中间件(['adminPanel:super_admin,admin,seller']);
}
在这里,
super\u admin
admin
seller
可以访问

函数uuu构造()
{
$this->middleware(['adminPanel:super_admin,null,null']);
}
这里
super\u admin
可以访问

函数uuu构造()
{
$this->middleware(['adminPanel:null,admin,null']);
}
这里
admin
可以访问

函数uuu构造()
{
$this->middleware(['adminPanel:null,null,seller']);
}
此处
卖家可以访问



您遇到了什么错误?什么是“但是这个多中间件不起作用”呢?你犯了什么错误?您肯定可以将多个中间件作为一个数组传递给
$this->middleware()
。问题可能是您有三个不同的中间件用于不同的角色,您应该有一个中间件,您可以传递所有应具有访问权限的角色,否则
超级管理员
具有访问权限,但由于他不是
管理员
卖家
,因此他没有访问权限。为了访问路由,请求必须通过所有中间件。@ImrulHasan请看一看,这样您可以传递多个应该有权访问中间件的角色,然后您可以检查经过身份验证的用户是否有任何角色。如果您试图保护特定路由,您可能需要看一看。你也可以这样做:)