Skip to content

RABC

理念

权限设计思想

角色基于访问控制(RBAC:Role-Based Access Control)是一种常见的权限管理方法,其核心思想是用户通过角色与权限关联。这样,不必直接给用户分配权限,而是分配角色给用户,角色再关联具备的权限。以下是一个基于RBAC思想的MySQL数据库表结构示例:

-- 用户(users)表:
CREATE TABLE users (
  user_id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  email VARCHAR(100),
  status TINYINT NOT NULL DEFAULT 1, -- 用于表示用户状态,如激活、禁用等
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 角色(roles)表:
CREATE TABLE roles (
  role_id INT AUTO_INCREMENT PRIMARY KEY,
  role_name VARCHAR(50) NOT NULL UNIQUE,
  description VARCHAR(255),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 权限(permissions)表:
CREATE TABLE permissions (
  permission_id INT AUTO_INCREMENT PRIMARY KEY,
  permission_name VARCHAR(50) NOT NULL UNIQUE,
  description VARCHAR(255)
);

-- 用户角色关联(user_roles)表:
CREATE TABLE user_roles (
  user_id INT,
  role_id INT,
  PRIMARY KEY (user_id, role_id),
  FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE,
  FOREIGN KEY (role_id) REFERENCES roles(role_id) ON DELETE CASCADE
);

-- 角色权限关联(role_permissions)表:
CREATE TABLE role_permissions (
  role_id INT,
  permission_id INT,
  PRIMARY KEY (role_id, permission_id),
  FOREIGN KEY (role_id) REFERENCES roles(role_id) ON DELETE CASCADE,
  FOREIGN KEY (permission_id) REFERENCES permissions(permission_id) ON DELETE CASCADE
);

这个结构为每个用户定义了一或多个角色,每个角色则具备了一或多个权限。对于RBAC系统来说,会有更多细节需要管理,比如管理角色之间的继承关系等,但以上表结构为这些关系提供了一个良好的起点。用户可通过自己的角色来获得相应的权限,进行相关的操作。