rockyfc / yii2-smart-rbac
适用于Yii2的智能RBAC管理器
dev-master
2018-09-05 03:27 UTC
Requires
- yiisoft/yii2: ~2.0.0
This package is not auto-updated.
Last update: 2024-09-26 12:39:41 UTC
README
本应用基于Yii2的数据结构,使用前请先安装yii2框架的rbac推荐的数据表。
网上提供的rbac功能界面理解起来有一定难度,因此在项目中重新编写了一套RBAC,并将其分享出来。
包括以下四个模块:
- 动作管理
- 角色管理
- 菜单管理
- 用户授权管理
在开发过程中,为了使用户能方便快速地进行二次开发,基本代码层次和架构均与yii2框架的Module书写方法相同,代码主体代码使用gii生成。并且未对视图层做过多修饰,必要时可自行调整。
安装方法
推荐使用 composer 安装
或者运行以下命令
php composer.phar require --prefer-dist rockyfc/yii2-smart-rbac "*"
或者将以下代码写入你的composer.json
文件中执行
"rockyfc/yii2-smart-rbac": "*"
使用方法
将以下代码添加到你的配置文件中
//权限管理组件 'components' => [ ...其他组件 "authManager" => [ // yii\rbac\DbManager的增强版 "class" => 'smart\rbac\components\DbManager', "defaultRoles" => ["guest"], //菜单表名称 "menuTable" => 'menu', //可以绑定角色的用户表名称 "userTable" => 'user', ], ...其他组件 ]
"modules" => [ 'rbac' => [ 'class' => 'smart\rbac\Module', //有些Module你并不想添加权限判断,则把它过滤掉 'skipOn' => ['debug','gii'], ], ]
请将菜单表导入数据库(表名称可自定义)
CREATE TABLE `menu` ( `menu_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单ID', `parent_id` int(11) DEFAULT NULL COMMENT '上级菜单', `menu_name` varchar(50) NOT NULL COMMENT '菜单名称', `url` varchar(300) NOT NULL DEFAULT '' COMMENT '链接地址', `icon` varchar(100) DEFAULT NULL COMMENT '菜单icon图', `create_at` int(11) DEFAULT NULL COMMENT '创建时间', `update_at` int(11) NOT NULL COMMENT '更新时间', `action_id` varchar(100) DEFAULT NULL COMMENT '当前菜单关联的actionId', `order_by` int(11) NOT NULL DEFAULT '0' COMMENT '排序值,越大越靠前', `status` int(1) NOT NULL DEFAULT '2' COMMENT '是否可用1:不可用 2:可用', PRIMARY KEY (`menu_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='菜单管理表';
我们将 @vendor\yiisoft\yii2\rbac\migrations\schema-mysql.sql
文件导入数据库,或者通过可视化管理工具、手动等方式创建该文件中的数据表。
访问方法
- 访问动作列表 http://xxxx.com/rbac/rbac/action/index
- 访问菜单列表 http://xxxx.com/rbac/rbac/menu/index
- 访问用户列表 http://xxxx.com/rbac/rbac/user/index
- 访问角色列表 http://xxxx.com/rbac/rbac/role/index
@title标签的使用
当你访问动作列表时,如果“描述”列直接显示Action不够直观的话,可以在编写controller的时候给class和function的注释加上@title标签,重新“刷新”动作列表就可以看到中文了。
/** * * @title 这里填写Controller标题 */ class UserController extends Controller{ /** * @title 这是action标题 */ public function actionIndex() { ... } }
你也可以给Module class添加@title
,方法同上。