在 Laravel 中设置角色和权限
Setting up roles and permissions in Laravel
我目前的大学项目是学校管理系统。它主要由三个 "profiles" 组成 - 一个用于学生,另一个用于 teachers/professors,第三个用于 coordinators/admins。
身份验证并离开登录页面后,这是我希望发生的事情:
- 如果用户在应用程序中只担任一个角色,则应将他们直接重定向到相应的个人资料(例如:学生直接转到学生个人资料);
- 然而,对于那些同时担任两个甚至所有三个角色(不太可能但可能)的人来说,身份 页面让他们可以在不同的个人资料之间进行选择;
- 用户只能访问其角色定义的页面和配置文件;
在 Laravel 5.6 内实施此操作的最佳方法是什么?
注意:我目前可以对用户进行身份验证,但没有适当的权限和角色。我正在使用 Laravel 的默认 users table。
@Julio Kirk 您可以使用 Voyager 包。
Voyager 只是您 Laravel 应用程序的管理员。无论您希望您的应用在 front-end 上做什么,都完全取决于您。您可以控制您的应用程序,并且可以使用 Voyager 通过添加数据、编辑用户、创建菜单和许多其他管理任务来让您的生活更轻松。
您的要求已在此项目中完全完成。
我建议使用 ENTRUST(Laravel 5 包)
简单而强大。
为了安装 Laravel 5 Entrust,只需将以下内容添加到您的 composer.json。然后 运行 作曲家更新:
"zizaco/entrust": "5.2.x-dev"
打开您的 config/app.php 并将以下内容添加到提供程序数组:
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
中的 routeMiddleware 数组。
阅读更多并获取图书馆:https://github.com/Zizaco/entrust
由于一个用户只能拥有三个角色中的一个,因此您实际上不需要将角色与权限分开 - 只需将角色单元添加到您的用户 table 或者如果您无法修改它,请创建一个新角色使用 id - 角色对。
之后你只需使用带参数的中间件:
https://laravel.com/docs/5.6/middleware#middleware-parameters
判断是否允许用户访问当前路由
除此之外,post 将为您解答:
我目前的大学项目是学校管理系统。它主要由三个 "profiles" 组成 - 一个用于学生,另一个用于 teachers/professors,第三个用于 coordinators/admins。
身份验证并离开登录页面后,这是我希望发生的事情:
- 如果用户在应用程序中只担任一个角色,则应将他们直接重定向到相应的个人资料(例如:学生直接转到学生个人资料);
- 然而,对于那些同时担任两个甚至所有三个角色(不太可能但可能)的人来说,身份 页面让他们可以在不同的个人资料之间进行选择;
- 用户只能访问其角色定义的页面和配置文件;
在 Laravel 5.6 内实施此操作的最佳方法是什么?
注意:我目前可以对用户进行身份验证,但没有适当的权限和角色。我正在使用 Laravel 的默认 users table。
@Julio Kirk 您可以使用 Voyager 包。
Voyager 只是您 Laravel 应用程序的管理员。无论您希望您的应用在 front-end 上做什么,都完全取决于您。您可以控制您的应用程序,并且可以使用 Voyager 通过添加数据、编辑用户、创建菜单和许多其他管理任务来让您的生活更轻松。
您的要求已在此项目中完全完成。
我建议使用 ENTRUST(Laravel 5 包)
简单而强大。
为了安装 Laravel 5 Entrust,只需将以下内容添加到您的 composer.json。然后 运行 作曲家更新:
"zizaco/entrust": "5.2.x-dev"
打开您的 config/app.php 并将以下内容添加到提供程序数组:
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
中的 routeMiddleware 数组。
阅读更多并获取图书馆:https://github.com/Zizaco/entrust
由于一个用户只能拥有三个角色中的一个,因此您实际上不需要将角色与权限分开 - 只需将角色单元添加到您的用户 table 或者如果您无法修改它,请创建一个新角色使用 id - 角色对。
之后你只需使用带参数的中间件: https://laravel.com/docs/5.6/middleware#middleware-parameters
判断是否允许用户访问当前路由
除此之外,post 将为您解答: