在 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 将为您解答: