权限架构是什么
权限架构(Permission Architecture)是一种管理和控制系统中用户访问资源的方式。它定义了谁可以访问哪些资源以及如何进行这些访问。权限架构的主要目标是确保系统的安全性和数据的完整性,防止未授权的访问和潜在的安全威胁。
通俗一点说,对于一个系统,我们需要规定每个用户能干什么,不能干什么,这也就是每个用户的权限,我们需要设置合理的权限去管理每一个接口。
权限架构包含什么
一个最基础的权限架构通常会包含三个内容,两种,一个是具体的用户,一个是用户组,一个是权限,另一种是,用户,角色,权限。在大部分的系统中,我们通常只会将权限赋予用户组,然后用户属于用户组。
五表结构
经典的五表结构是指在权限管理系统中常见的五张核心数据表,用于管理用户、角色、权限以及它们之间的关系。这种结构能够清晰地定义和维护权限体系,广泛应用于基于角色的访问控制(RBAC)模型。五表结构通常包括以下五张表:
用户表(users)
- 记录系统中所有用户的信息。
- 典型字段:用户ID、用户名、密码、电子邮件、状态(如激活或禁用)等。
CREATE TABLE users ( user_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID', username VARCHAR ( 50 ) NOT NULL UNIQUE COMMENT '用户名', PASSWORD VARCHAR ( 255 ) NOT NULL COMMENT '密码', created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) COMMENT '用户表';
角色表(Role)
- 存储角色的基本信息,如角色ID、角色名、角色描述等。角色是权限的集合,用户通过角色来获得权限。
CREATE TABLE roles ( role_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '角色ID', role_name VARCHAR ( 50 ) NOT NULL UNIQUE COMMENT '角色名称', description VARCHAR ( 255 ) COMMENT '角色描述', created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) COMMENT '角色表';
权限表(Permission)
- 存储权限的基本信息,如权限ID、权限名、权限描述等。权限通常对应于系统中的某些操作或资源的访问控制。
CREATE TABLE permissions ( permission_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '权限ID', permission_name VARCHAR ( 50 ) NOT NULL UNIQUE COMMENT '权限名称', description VARCHAR ( 255 ) COMMENT '权限描述', created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) COMMENT '权限表';
用户角色关系表(UserRole):
- 存储用户和角色之间的关系,通常包括用户ID和角色ID。这个表用来表示一个用户拥有哪些角色。
CREATE TABLE user_roles ( user_id INT COMMENT '用户ID', role_id INT COMMENT '角色ID', assigned_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '分配时间', PRIMARY KEY ( user_id, role_id ), FOREIGN KEY ( user_id ) REFERENCES users ( user_id ) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ( role_id ) REFERENCES roles ( role_id ) ON DELETE CASCADE ON UPDATE CASCADE ) COMMENT '用户角色关联表';
角色权限关联表(rolePermissions)
- 存储权限与角色之间的关系,通常包括权限ID和角色ID。这个表用来表示一个角色拥有哪些权限
CREATE TABLE role_permissions ( role_id INT COMMENT '角色ID', permission_id INT COMMENT '权限ID', assigned_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '分配时间', PRIMARY KEY ( role_id, permission_id ), FOREIGN KEY ( role_id ) REFERENCES roles ( role_id ) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ( permission_id ) REFERENCES permissions ( permission_id ) ON DELETE CASCADE ON UPDATE CASCADE ) COMMENT '角色权限关联表';