在Laravel中设置角色和权限

时间:2018-04-10 05:22:32

标签: laravel authentication permissions roles

我目前的大学项目是学校管理系统。它主要由三个"配置文件" - 一个用于学生,另一个用于教师/教授,第三个用于协调员/管理员。

经过身份验证并离开登录页面后,我就会发生这种情况:

  • 如果用户在应用程序中只占用一个角色,则应将其直接重定向到对应的个人资料(例如:学生直接转到学生档案);
  • 但是,对于那些占据两个甚至全部三个角色(不太可能但可能)的人来说,身份页面可让他们在不同的个人资料中做出选择;
  • 用户只能访问其角色定义的页面和配置文件;

在Laravel 5.6中实现此目的的最佳方式是什么?

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

3 个答案:

答案 0 :(得分:0)

@Julio Kirk您可以使用 Voyager 套餐。

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

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

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