RBAC权限管理设置

发布于:2024-10-13 ⋅ 阅读:(47) ⋅ 点赞:(0)

RBAC(Role-Based Access Control,基于角色的访问控制)是一种常用的访问控制机制,用于管理系统中的用户权限。RBAC通过将用户分配给角色,并将权限授予角色,从而控制用户对资源的访问。

基于RBAC实现的权限管理通常需要涉及以下几张表:

1. 用户表(user):记录系统中的所有用户,包括用户ID、用户名、密码等信息。

2. 角色表(role):记录系统中的所有角色,包括角色ID、角色名等信息。

3. 用户角色关联表(user_role):记录用户和角色之间的关联关系,包括用户ID、角色ID等信息

4. 权限表(permission):记录系统中的所有权限,包括权限ID、权限名、权限类型等信息。

5. 角色权限关联表(role_permission):记录角色和权限之间的关联关系,包括角色ID、权限ID等信息。

-- 创建角色表
CREATE TABLE roles (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  description VARCHAR(255),  PRIMARY KEY (id)
);


-- 创建资源表
CREATE TABLE resources (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  description VARCHAR(255)
);

-- 创建用户表
CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL
);
-- 创建权限表
CREATE TABLE permissions (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  description VARCHAR(255),
  resource_id INT NOT NULL,
  FOREIGN KEY (resource_id) REFERENCES resources(id)
);

-- 创建角色-权限关联表
CREATE TABLE role_permissions (
  role_id INT,
  permission_id INT,
  FOREIGN KEY (role_id) REFERENCES roles(id),
  FOREIGN KEY (permission_id) REFERENCES permissions(id),
  PRIMARY KEY (role_id, permission_id)
);

-- 创建用户-角色关联表
CREATE TABLE user_roles (
  user_id INT,
  role_id INT,
  FOREIGN KEY (user_id) REFERENCES users(id),
  FOREIGN KEY (role_id) REFERENCES roles(id),
  PRIMARY KEY (user_id, role_id)
);

-- 插入角色数据
INSERT INTO roles (id, name, description) VALUES
(1, '管理员', '拥有系统管理的所有权限'),
(2, '编辑员', '拥有编辑内容的权限'),
(3, '访客', '只具备浏览内容的权限');

-- 插入资源数据
INSERT INTO resources (id, name, description) VALUES
(1, '文章', '存储网站的文章内容');

-- 插入权限数据
INSERT INTO permissions (id, name, description, resource_id) VALUES
(1, '创建文章', '允许创建新文章', 1),
(2, '编辑文章', '允许编辑已存在的文章', 1),
(3, '删除文章', '允许删除文章', 1);


-- 插入用户数据
INSERT INTO users (id, name) VALUES
(1, '张一'),
(2, '张二'),
(3, '张三');

-- 插入角色-权限关联数据
INSERT INTO role_permissions (role_id, permission_id) VALUES
(1, 1),
(1, 2),
(1, 3),
(2, 2),
(3, 1);

-- 插入用户-角色关联数据
INSERT INTO user_roles (user_id, role_id) VALUES
(1, 1),
(2, 2),
(3, 3);