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)
);