首页 文章

在Laravel中设置角色和权限

提问于
浏览
0

我目前的大学项目是学校管理系统 . 它主要由三个“概况”组成 - 一个用于学生,另一个用于教师/教授,第三个用于协调员/管理员 .

在身份验证并离开登录页面之后,这就是我想要发生的事情:

  • 如果用户在应用程序中只占用一个角色,则应将其直接重定向到对应的 Profiles (例如:学生直接进入学生档案);

  • 但是,对于那些占据两个甚至全部三个角色(不太可能但可能)的人来说,身份页面可以让他们在不同的 Profiles 中做出选择;

  • 用户只能访问其角色定义的页面和配置文件;

在Laravel 5.6中实现这一目标的最佳方法是什么?

注意:我目前可以对用户进行身份验证,但没有权限和角色 . 我是'm using Laravel'的默认用户表 .

3 回答

  • 0

    我建议使用 ENTRUST (Laravel 5 Package)

    简单而有力 .

    要安装Laravel 5 Entrust,只需将以下内容添加到composer.json即可 . 然后运行composer update:

    "zizaco/entrust": "5.2.x-dev"
    

    打开config / app.php并将以下内容添加到providers数组中:

    Zizaco\Entrust\EntrustServiceProvider::class,
    

    在相同的config / app.php中,将以下内容添加到别名数组中:

    'Entrust'   => Zizaco\Entrust\EntrustFacade::class,
    

    运行以下命令以发布程序包配置文件 config/entrust.php:

    php artisan vendor:publish
    

    打开config / auth.php并添加以下内容:

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => Namespace\Of\Your\User\Model\User::class,
            'table' => 'users',
        ],
    ],
    

    如果您想使用中间件(需要Laravel 5.1或更高版本),您还需要添加以下内容:

    'role' => \Zizaco\Entrust\Middleware\EntrustRole::class,
    'permission' => \Zizaco\Entrust\Middleware\EntrustPermission::class,
    'ability' => \Zizaco\Entrust\Middleware\EntrustAbility::class,
    

    app/Http/Kernel.php 中路由中间件数组 .

    阅读更多内容并获取图书馆:https://github.com/Zizaco/entrust

  • 0

    @Julio Kirk您可以使用 Voyager 包 .

    Voyager只是Laravel应用程序的管理员 . 无论你想要什么,你的应用程序在前端完成取决于你 . 您可以控制应用程序,并且可以使用Voyager通过添加数据,编辑用户,创建菜单和许多其他管理任务来简化您的生活 .

    您的要求已在此项目中完成 .

  • 0

    由于一个用户只能拥有三个角色中的一个,因此您不需要将角色与权限分开 - 只需将角色单元添加到您的用户表中,或者如果您无法修改它,请创建具有id - 角色对的新角色 .

    之后,您只需使用带参数的中间件:https://laravel.com/docs/5.6/middleware#middleware-parameters

    确定是否允许用户访问当前路线 .

    除此之外,这篇文章将回复你:Laravel 5.4 redirection to custom url after login

相关问题