出于学习目的,我想在我的应用程序中使用动态用户角色 . 例如,超级管理员可以创建新用户,还可以创建新角色,并为用户分配角色 . 现在我想出了以下内容:

路线:

Route::group(['middleware' => ['admin:4']], function()
{
    Route::get('/admin', 'AdminController@index');
});

Route::group(['middleware' => ['admin:9']], function()
{
    Route::get('/admin/users', 'AdminController@users');
});

在此示例中,整数是用户角色 . 9将是最高的 . 看看我的中间件:

管理中间件:

public function handle($request, Closure $next, $role)
{
    if ($request->user()->role >= $role)
    {
        return $next($request);
    }

    return redirect('home');
}

当想要访问 /admin 路由时,这将检查用户是否具有"4"或更高的角色 . 如果是这样,他们可以访问,如果没有,他们将返回 /home .

以上是有效的,但主要问题是用户角色在我的路由中是硬编码的 . 有没有办法可以动态地将参数传递给我的中间件?如果是这样,那就是我需要的一切 . 所以任何指针都会有所帮助 .

PS . 我检查了另一个选项,我认为会更好,但不确定 . 使用数据透视表旁边的角色表,然后为用户分配各种角色 . 因此,我可以使用多选框为一个用户分配各种角色 . 然后在我的中间件中,检查该特定用户是否具有访问该特定页面所需的角色 . 同样的问题,我如何动态检查我的中间件特定页面需要哪个角色?在我的管理部分,我希望能够为每个页面分配不同的角色 . 有什么想法吗?