php RBAC權限控制系統mysql表設計


實現效果

1、菜單管理

2、角色管理

3、用戶管理

Mysql表設計:

  1. s_menu 菜單表
    +------------+------------------+------+-----+---------+----------------+
    | Field      | Type             | Null | Key | Default | Extra          |
    +------------+------------------+------+-----+---------+----------------+
    | id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
    | pid        | int(11)          | YES  |     | 0       |                |父級id
    | crd        | int(11)          | YES  |     | 0       |                |排序
    | title      | varchar(20)      | YES  |     | NULL    |                |名稱
    | controller | varchar(30)      | YES  |     | NULL    |                |控制器
    | method     | varchar(30)      | YES  |     | NULL    |                |方法
    | ishidden   | tinyint(1)       | YES  |     | 0       |                |0:顯示  1:隱藏
    | status     | tinyint(1)       | YES  |     | 0       |                |0:正常  1:禁用
    | type       | tinyint(1)       | YES  |     | 0       |                |0:系統1 1:系統2(如果單個系統則不需要此字段)
    +------------+------------------+------+-----+---------+----------------+

     

  2. s_group 角色表
    +--------+------------------+------+-----+---------+----------------+
    | Field  | Type             | Null | Key | Default | Extra          |
    +--------+------------------+------+-----+---------+----------------+
    | id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
    | title  | varchar(30)      | YES  |     | NULL    |                |角色標題
    | rights | text             | YES  |     | NULL    |                |權限組,存s_menu表id的json數組
    +--------+------------------+------+-----+---------+----------------+

     

  3. s_user 用戶表
    +----------+------------------+------+-----+---------+----------------+
    | Field    | Type             | Null | Key | Default | Extra          |
    +----------+------------------+------+-----+---------+----------------+
    | id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
    | user     | varchar(20)      | YES  |     | NULL    |                |用戶名
    | pass     | varchar(100)     | YES  |     | NULL    |                |密碼
    | truename | varchar(20)      | YES  |     | NULL    |                |真實姓名
    | gid      | int(11) unsigned | YES  |     | NULL    |                |角色表 id
    | gid_view | int(11) unsigned | YES  |     | NULL    |                |角色表2 id(意思是一個用戶擁有兩套系統的角色權限如果單個系統則不需要此字段)
    | status   | tinyint(4)       | NO   |     | 0       |                |用戶狀態 0:正常  1:禁用
    | add_time | int(11)          | YES  |     | NULL    |                |添加時間
    +----------+------------------+------+-----+---------+----------------+

     

原理:

  1. s_menu表間保存類文件的控制器、方法、菜單名稱,子級菜單的pid為父級菜單的id進行存儲,一級菜單pid默認為0,便於自定義菜單的遍歷渲染
    +----+------+------+---------------+------------+--------+----------+--------+------+
    | id | pid  | crd  | title         | controller | method | ishidden | status | type |
    +----+------+------+---------------+------------+--------+----------+--------+------+
    |  1 |    0 |    7 | 安全          |            |        |        0 |      0 |    0 |
    |  2 |    1 |    0 | 用戶管理      | User       | index  |        0 |      0 |    0 |
    |  3 |    1 |    1 | 角色管理      | Role       | index  |        0 |      0 |    0 |
    |  4 |    1 |    2 | 表單-菜單管理 | Menu       | index  |        0 |      0 |    0 |
    |  5 |    2 |    0 | 用戶添加      | User       | add    |        1 |      0 |    0 |
    |  6 |    2 |    0 | 用戶保存      | User       | save   |        1 |      0 |    0 |
    |  7 |    2 |    0 | 用戶編輯      | User       | edit   |        1 |      0 |    0 |
    |  8 |    2 |    0 | 用戶修改      | User       | update |        1 |      0 |    0 |
    |  9 |    2 |    0 | 用戶刪除      | User       | delete |        1 |      0 |    0 |
    | 10 |    3 |    0 | 角色添加      | Role       | add    |        1 |      0 |    0 |
    +----+------+------+---------------+------------+--------+----------+--------+------+

    如:安全下面有【用戶管理】、【角色管理】、【表彰-菜單管理】3個子菜單

  2. s_group表將多個s_menu_id形成json數組綁定角色名稱
    +----+----------+-----------------------------------------------------------------------------+
    | id | title    | rights                                                                      |
    +----+----------+-----------------------------------------------------------------------------+
    | 12 | 視覺設計 | [46,51,59,60,67,92,126,127,272,273,213,214,215,263,268,271,275,317,318,264] |
    | 14 | 財務     | [92,126,127,212,113,115,226,216,217,263,268,264]                            |
    +----+----------+-----------------------------------------------------------------------------+

     

  3. s_user綁定有角色組的id,當php登錄后獲取用戶表id,就可查詢到是否有當前訪問的控制器的方法權限
    +----+--------+----------------------------------+----------+------+----------+--------+------------+
    | id | user   | pass                             | truename | gid  | gid_view | status | add_time   |
    +----+--------+----------------------------------+----------+------+----------+--------+------------+
    |  1 | xxx    | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | xxx      |    1 |        2 |      0 | 1236456622 |
    | 12 | xxx    | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | xxx      |    7 |        4 |      0 | 1546313958 |
    | 13 | xxx    | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | xxx      |    9 |        4 |      0 | 1546313989 |
    | 14 | xxx    | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | xxx      |   10 |        3 |      0 | 1546314013 |
    | 15 | xxx    | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  | xxx      |   16 |        3 |      0 | 1546314060 |
    +----+--------+----------------------------------+----------+------+----------+--------+------------+

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM