Yii2 框架RBAC 管理Smart版

Smart Rbac Manager for Yii2

項目地址:https://github.com/rockyfc/yii2-smart-rbac
本應用建立在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 文件導入數據庫,或者通過可視化管理工具、手動等方式創建改文件中的數據表。

訪問方法

@title標簽的使用

當你訪問action列表的時候,如果"描述"列直接顯示Action不夠直觀的話,可以在編寫controller的時候給class和function的注釋加上@title標簽,重新"刷新"action列表就可以看到中文了。

/**
 *
 * @title 這里填寫Controller標題
 */
class UserController extends Controller{

    /**
     * @title 這是action標題
     */
    public function actionIndex()
    {
       ...
    }
}

你也可以給Module class添加@title,方法同上。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容