rbac
· 2 min read
RBAC 是一种基于角色的访问控制模型,通过将用户与角色关联,角色与权限关联,来实现对资源的灵活权限管理。
表结构设计
用户表(users)
-
存储用户基本信息。
-
每个用户关联多个角色。
users (
id INT PRIMARY KEY,
username VARCHAR(255), -- 用户表
password VARCHAR(255) -- 密码
)
角色表(roles)
-
定义系统中可用的角色。
-
每个角色可以关联多个权限。
roles (
id INT PRIMARY KEY,
name VARCHAR(255), -- 角色名称
description VARCHAR(255) -- 角色描述
)
权限表(permissions)
-
定义系统中的所有权限项。
-
权限类型可以是菜单、接口、按钮等。
permissions (
id INT PRIMARY KEY,
name VARCHAR(255), -- 权限名称
type ENUM('menu', 'api', 'button'), -- 权限类型
resource VARCHAR(255), -- 资源路径(如接口路径、菜单标识等)
parent_id INT, -- 父级权限(用于菜单的层级关系)
description VARCHAR(255) -- 权限描述
)
用户角色表(user_roles)
-
建立用户与角色之间的多对多关系。
user_roles (
user_id INT, -- 用户ID
role_id INT, -- 角色ID
PRIMARY KEY (user_id, role_id)
)
角色权限表(role_permissions)
-
建立角色与权限之间的多对多关系。
role_permissions (
role_id INT, -- 角色ID
permission_id INT, -- 权限ID
PRIMARY KEY (role_id, permission_id)
)
前端实现
基于 casl 实现即可
https://casl.js.org/v6/en/package/casl-react
后端实现
也是基于 casl 实现