rockyfc / yii2-smart-rbac
Smart Rbac Manager for Yii2
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- yiisoft/yii2: ~2.0.0
This package is not auto-updated.
Last update: 2024-12-19 13:41:26 UTC
README
本应用建立在Yii2的数据结构基础之上,使用之前请先安装yii2框架的rbac推荐的数据表。
网上提供的rbac功能界面理解起来有一定的难度,所以在项目中开发中重写了一套 RBAC。并把它分享出来。
其中包括四个模块:
- Action管理
- 角色管理
- 菜单管理
- 用户授权管理
在开发过程中,为了使用户能方便快速的的进行二次开发,基本代码层次和架构均同yii2框架的Module 书写方法,代码主体代码用gii生成。并且未对view层做过多修饰,必要时可自行调整。
安装方法
推荐使用 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
文件导入数据库,或者通过可视化管理工具、手动等方式创建改文件中的数据表。
访问方法
- 访问ction列表 http://xxxx.com/rbac/rbac/action/index
- 访问Menu列表 http://xxxx.com/rbac/rbac/menu/index
- 访问用户列表 http://xxxx.com/rbac/rbac/user/index
- 访问角色列表 http://xxxx.com/rbac/rbac/role/index
@title标签的使用
当你访问action列表的时候,如果"描述"列直接显示Action不够直观的话,可以在编写controller的时候给class和function的注释加上@title标签,重新"刷新"action列表就可以看到中文了。
/** * * @title 这里填写Controller标题 */ class UserController extends Controller{ /** * @title 这是action标题 */ public function actionIndex() { ... } }
你也可以给Module class添加@title
,方法同上。