首页 > 解决方案 > 在 Laravel 中配置带保护的路由问题

问题描述

我是初学者 php 开发人员。我的路由有小问题。我在我的网站上使用这个组件:spatie/laravel-permission

我有这条路线:

Route::group(['prefix' => '', 'middleware' => ['role:superadmin, admin, seller, telemarketer']], function () {
    Route::get('/', 'HomeController@index')->name('cms.home');

    Route::resource('pages', 'PageController')->only(['index', 'create', 'store', 'edit', 'update', 'destroy']);
    Route::get('/pages/dataTable', 'PageController@dataTable')->name('pages.dataTable');
});

我的中间件有问题。当我有这个时:['role:superadmin, admin, sell, telemarketer']] 我有错误: InvalidArgumentException Auth guard [ admin] 没有定义。

我的用户具有“超级管理员”角色。

当我编写此代码时: ['role:superadmin']] - 它工作正常。

我怎样才能将它修复到我的其他角色?

请帮我

标签: phplaravel

解决方案


如果您使用该role包中的中间件,它不会将列表或角色作为中间件参数。第一个参数是角色,第二个是要使用的守卫。

public function handle($request, Closure $next, $role, $guard = null)

如果要传递角色数组,可以使用|来区分它们:

role:superadmin|admin|seller|telemarketer

这就是传递的所有一个参数,中间件会将其分解为一组角色。


推荐阅读