【发布时间】:2020-07-27 14:14:43
【问题描述】:
Kernel.php
'admin' => \App\Http\Middleware\Admin::class,
'super_admin' => \App\Http\Middleware\SuperAdmin::class,
'seller' => \App\Http\Middleware\Seller::class,
我创建了三个不同的
middlewere。这是kernel.php中的那些人
例如,我想向所有这三个用户授予仪表板访问权限。 admin、super_admin 和 seller。
DashboardController.php
function __construct()
{
$this->middleware(['super_admin', 'admin', 'seller']);
}
但是这个多重中间没有工作
没有错误,但我无法访问管理员路由
单个中间件完美运行
参考文献
web.php
Route::get('admin', 'DashboardController@index')->name('dashboard.index');
Route::get('admin/shops', 'DashboardController@shops')->name('dashboard.shops');
【问题讨论】:
-
你遇到了什么错误?
-
"但是这个多个中间件不起作用"是什么意思?你遇到了什么错误?您绝对可以将多个中间件作为数组传递给
$this->middleware()。 -
问题可能是你有不同角色的三个不同的中间件,你应该有一个中间件,你可以传递所有应该有权访问的角色,否则
super_admin有访问权限,但是因为他不是admin或seller,他没有访问权限。为了访问路由,请求必须通过所有中间件。 -
@ImrulHasan 看看middleware parameters,这样您就可以传递应该有权访问中间件的多个角色,然后您可以检查经过身份验证的用户是否拥有其中任何一个。
-
你可能想看看route-filters,以防你试图保护特定的路线。你也可以group他们:)
标签: php laravel middleware