dmk-design / yii2-rbac-plus
yii2数据库基于角色的访问控制管理器
v1.13.0
2022-02-11 01:27 UTC
Requires
- dmk-design/yii2-ajaxcrud: >2.1.8
- yiisoft/yii2: >=2.0.4
README
yii2数据库基于角色的访问控制管理器
功能
- 角色、权限和规则的CRUD操作
- 允许为用户分配多个角色
- 提供漂亮的视图,可以立即集成
- 与Yii2-user-plus集成 - 灵活的用户管理模块
安装
安装此扩展的首选方式是通过composer。
运行以下命令之一:
php composer.phar require --prefer-dist johnitvn/yii2-rbac-plus "*"
或者在您的composer.json文件的require部分添加:
"johnitvn/yii2-rbac-plus": "*"
使用方法
- 让我们在主配置文件中将模块配置添加到模块中
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager',
],
],
'modules' => [
'rbac' => [
'class' => 'johnitvn\rbacplus\Module'
]
]
接下来,更新数据库模式
$ php yii migrate/up --migrationPath=@yii/rbac/migrations
好了。完成了。现在可用的路由有
- /rbac/rule
- /rbac/permission
- /rbac/role
- /rbac/assignment
- 可用的模块配置
'modules' => [
'rbac' => [
'class' => 'johnitvn\rbacplus\Module',
'userModelClassName'=>null,
'userModelIdField'=>'id',
'userModelLoginField'=>'username',
'userModelLoginFieldLabel'=>null,
'userModelExtraDataColumls'=>null,
'beforeCreateController'=>null,
'beforeAction'=>null
]
]
- userModelClassName: 用户模型类。
如果您未设置或设置为null,RBAC Plus将从Yii::$app->getUser()->identityClass获取 - userModelIdField: 用户模型id字段。
默认id字段是'id',如果数据库中用户表的主键不是'id',则必须设置此配置 - userModelLoginField 用户模型登录字段。
默认登录字段是'username'。也许您使用电子邮件字段或其他字段进行登录。因此,您必须更改此配置 - userModelLoginFieldLabel 用户模型登录字段标签。
如果设置为null,则标签将从$userModelClass->attributeLabels()[$userModelLoginField]获取 - userModelExtraDataColumls 您想在用户分配视图中显示的额外数据列。
默认情况下,分配数据网格视图仅显示id和登录列数据。如果想要添加created_at列,可以添加
'userModelExtraDataColumls'=>[ [ 'attributes'=>'created_at', 'value'=>function($model){ return date('m/d/Y', $model->created_at); } ] ]
- beforeCreateController 在Rbac Plus模块中创建所有控制器之前的可调用函数。默认值为null。当您想要限制对Rbac Plus模块的访问时,需要配置此设置。
示例
'beforeCreateController'=>function($route){ /** *@var string $route The route consisting of module, controller and action IDs. */ }
- beforeActionRbac Plus模块中所有控制器中的动作之前可调用的函数。
默认值为null。当您想要限制对Rbac Plus模块中某个控制器中任何动作的访问时,需要配置此设置。
示例
'beforeAction'=>function($action){ /** *@var yii\base\Action $action the action to be executed. */ }