Laravel 一个或两个角色的中间组不工作

Laravel 一个或两个角色的中间组不工作,laravel,Laravel,我有3个用户角色,超级管理员,管理员和用户或来宾,3组路由 1=将角色分配给用户(超级管理员) 2=管理面板(超级管理员,管理员) 3=索引页(超级管理员、管理员、用户或来宾) 这三组路由由具有给定权限的用户访问。我尝试了很多东西,但都不管用 用户模型 榜样 路线 Middleware.php 您只需获取用户的所有角色并检查他是否已授予权限即可: Route::group(['middleware' => 'roles:admin,superadmin,user'], functi

我有3个用户角色,超级管理员,管理员和用户或来宾,3组路由

1=将角色分配给用户(超级管理员)

2=管理面板(超级管理员,管理员)

3=索引页(超级管理员、管理员、用户或来宾)

这三组路由由具有给定权限的用户访问。我尝试了很多东西,但都不管用

用户模型

榜样

路线

Middleware.php


您只需获取用户的所有角色并检查他是否已授予权限即可:

    Route::group(['middleware' => 'roles:admin,superadmin,user'], function () {
        Route::get('/index', 'ProductController@index_page')
    });
然后在中间件中,您应该这样做

    public function handle($request, Closure $next, string $roles)
    {
         $user_roles = Auth::user()->role;
         $roles = explode(',' $roles);
         if ($user_roles->whereIn('role', $roles)->count()) {
             return $next($request);
         }
         throw new Exeception('Unauthorized', 401)
    }

您只需获取用户的所有角色并检查他是否已授予权限即可:

    Route::group(['middleware' => 'roles:admin,superadmin,user'], function () {
        Route::get('/index', 'ProductController@index_page')
    });
然后在中间件中,您应该这样做

    public function handle($request, Closure $next, string $roles)
    {
         $user_roles = Auth::user()->role;
         $roles = explode(',' $roles);
         if ($user_roles->whereIn('role', $roles)->count()) {
             return $next($request);
         }
         throw new Exeception('Unauthorized', 401)
    }

这样行吗
->其中()
期望数组作为第二个参数,但您得到了
字符串$roles
:@timliewis you correct,I fixed itError:传递给App\Http\Middleware\RoleCheckMiddleware::handle()的参数3必须是数组类型,字符串给定,登录电子邮件具有角色admin@AliRaza如果更改代码,则不可能得到相同的错误:调用成员函数,其中()为null
dd($roles)
return-only-admin和
dd($user\u-roles)
return-null这样做有效吗
->其中()
期望数组作为第二个参数,但您得到了
字符串$roles
:@timliewis you correct,I fixed itError:传递给App\Http\Middleware\RoleCheckMiddleware::handle()的参数3必须是数组类型,字符串给定,登录电子邮件具有角色admin@AliRaza如果更改代码,则不可能得到相同的错误:调用成员函数,其中()为null
dd($roles)
仅返回admin,而
dd($user\u roles)
返回null
    Route::group(['middleware' => 'roles:admin,superadmin,user'], function () {
        Route::get('/index', 'ProductController@index_page')
    });
    public function handle($request, Closure $next, string $roles)
    {
         $user_roles = Auth::user()->role;
         $roles = explode(',' $roles);
         if ($user_roles->whereIn('role', $roles)->count()) {
             return $next($request);
         }
         throw new Exeception('Unauthorized', 401)
    }