Laravel Zizaco - Entrust 扩展包 实现RBAC权限管理系统-Entrust安装

发布时间:2018-05-06 编辑:小张个人博客 查看次数:5955

Zizaco/Entrust 是 Laravel 下 用户权限系统 的解决方案, 配合 用户身份认证 扩展包 Zizaco/confide 使用, 可以快速搭建出一套具备高扩展性的用户系统.

Confide, Entrust 和 Sentry

首先两个概念分清楚:

用户身份认证 Authentication - 处理用户登录, 退出, 注册, 找回密码, 重置密码, 用户邮箱认证 etc..

权限管理 Authorization - 负责 用户 与 权限, 用户组 三者之间的对应, 以及管理.

下面是这几个 Package 的简单区别:

Sentry = 用户身份认证 + 权限管理;

Zizaco/Entrust = 权限管理;

Zizaco/confide = 用户身份认证;

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

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

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

Zizaco\Entrust\EntrustServiceProvider::class,

在同一个config / app.php中,并将以下内容添加到liases数组中:

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

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

php artisan vendor:publish

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

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => namespace \App\Http\Model\UserName::class, // 根据个人实际路径填写
        'table' => 'user',
    ],
],

如果你想使用中间件(需要laravel 5.1或更高版本)添加以下内容(app/Http/Kernel.php):

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

配置

在设置属性值config/auth.php这些值将用于 Entrust是指正确的用户表和模型。

来进一步自定义表名和模型命名空间、编辑config/entrust.php。

用户与角色

现在生成 Entrust 迁移:

php artisan entrust:migration

Entrust 迁移

它将生成<timestamp> _entrust_setup_tables.php迁移。您现在可以使用artisan migrate命令运行它:

php artisan migrate

迁移后,将出现四张新表:

roles - 存储角色记录

permissions - 存储权限记录

role_user-存储角色和用户之间的多对多关系

permission_role-存储角色和权限之间的多对多关系

RBAC权限管理系统-Entrust安装

RBAC权限管理系统-Entrust安装


在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can't create table (errno: 150)的错误信息结果是不能建立 引用约束。

MySQL ERROR 1005:


创建角色模型里面app/models/Role.php用以下的例子:

<?php
namespace App\Http\Model\Role;

use Zizaco\Entrust\EntrustRole;

class Role extends EntrustRole{

}


这个Role模型有三个主要属性:

name-对角色独特的名称,用于查找信息的应用层中的作用。例如:"admin"、"owner"、"employee"

display_name-对于角色的可读名称。不一定是唯一的选择。例如:"用户管理"、"项目业主"

description-一个更详细的解释是什么角色呢。也可选。

display_name描述是可选的;在各自领域的数据库可为空。

权限

创建权限模型里面app/models/Permission.php用以下的例子:

<?php 
namespace App\Http\Model\Permission;

use Zizaco\Entrust\EntrustPermission;

class Permission extends EntrustPermission{

}

权限模型具有与Role相同的三个属性:

name - 权限的唯一名称,用于在应用程序层中查找权限信息。 例如:"create-post","edit-user","post-payment","mail-list-subscribe"

display_name-用户权限的可读名称。 不一定是唯一的和可选的。 例如:"创建帖子","编辑用户","后付款","订阅邮件列表"

description - 更详细的权限说明。

用户

接下来,在现有的用户模型中使用EntrustUserTraittrait。 例如:

<?php

use Zizaco\Entrust\Traits\EntrustUserTrait;

class User extends Eloquent
{
    use EntrustUserTrait; // add this trait to your user model

    ...
}

这将启用与Role的关系,并在User模型中添加以下方法roles(),hasRole($name),can($permission)ability($roles,$permissions,$options)在您的User模型中。

别忘了,生成自动加载文件

composer dump-autoload

Laravel Zizaco/Entrust 扩展包,到这一步基本已经安装完成了,后期再发布一篇关于 Zizaco/Entrust 基本使用!

更多关于Zizaco/Entrust 扩展包的介绍可以点击查看



出处:小张个人博客

网址:http://blog.023xs.cn/

您的支持是对博主最大的鼓励,感谢您的认真阅读。欢迎转载,但请保留该声明。

顶部

Copyright © 小张个人博客 All Rights Reserved 渝ICP备15006773号-1

联系方式:[email protected] | 本站文章仅供学习和参考

渝公网安备 50024102500267号