Laravel 一个或两个角色的中间组不工作
我有3个用户角色,超级管理员,管理员和用户或来宾,3组路由 1=将角色分配给用户(超级管理员) 2=管理面板(超级管理员,管理员) 3=索引页(超级管理员、管理员、用户或来宾) 这三组路由由具有给定权限的用户访问。我尝试了很多东西,但都不管用 用户模型 榜样 路线 Middleware.phpLaravel 一个或两个角色的中间组不工作,laravel,Laravel,我有3个用户角色,超级管理员,管理员和用户或来宾,3组路由 1=将角色分配给用户(超级管理员) 2=管理面板(超级管理员,管理员) 3=索引页(超级管理员、管理员、用户或来宾) 这三组路由由具有给定权限的用户访问。我尝试了很多东西,但都不管用 用户模型 榜样 路线 Middleware.php 您只需获取用户的所有角色并检查他是否已授予权限即可: Route::group(['middleware' => 'roles:admin,superadmin,user'], functi
您只需获取用户的所有角色并检查他是否已授予权限即可:
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如果更改代码,则不可能得到相同的错误:调用成员函数,其中()为nulldd($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如果更改代码,则不可能得到相同的错误:调用成员函数,其中()为nulldd($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)
}