【数据库表结构】

RABC

RABC(基于角色的访问控制,Role-Based Access Control)

用户表 (users)

DROP TABLE IF EXISTS users;

CREATE TABLE users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID,自增主键',
    username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名,唯一',
    password VARCHAR(512) NOT NULL COMMENT '用户密码(加密存储)',
    enabled TINYINT DEFAULT 1 COMMENT '是否启用:0-禁用,1-启用',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT='用户表' AUTO_INCREMENT=10001;

角色表(roles)

CREATE TABLE roles (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,                   -- 角色名称
    description VARCHAR(255)                      -- 角色描述
);

用户角色关系表 (user_roles)

CREATE TABLE user_roles (
    user_id BIGINT,
    role_id BIGINT,
    PRIMARY KEY (user_id, role_id),
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (role_id) REFERENCES roles(id)
);

菜单表 menus

CREATE TABLE menus (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,         -- 菜单ID
    name VARCHAR(255) NOT NULL,                   -- 菜单名称
    url VARCHAR(255),                             -- 菜单的 URL(可为空)
    parent_id BIGINT DEFAULT NULL,                -- 父菜单ID(支持多级菜单)
    component VARCHAR(255),                       -- 组件名称,用于动态加载
    order_index INT DEFAULT 0,                    -- 菜单排序字段
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

角色菜单关系表 role_menus

CREATE TABLE role_menus (
    role_id BIGINT,
    menu_id BIGINT,
    PRIMARY KEY (role_id, menu_id),
    FOREIGN KEY (role_id) REFERENCES roles(id),
    FOREIGN KEY (menu_id) REFERENCES menus(id)
);

权限表 permissions

CREATE TABLE permissions (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,                  -- 权限名称(如 "create:post")
    description VARCHAR(255)                     -- 权限描述
);

role_permissions 关系表

CREATE TABLE role_permissions (
    role_id BIGINT,
    permission_id BIGINT,
    PRIMARY KEY (role_id, permission_id),
    FOREIGN KEY (role_id) REFERENCES roles(id),
    FOREIGN KEY (permission_id) REFERENCES permissions(id)
);

数据插入

插入用户数据

INSERT INTO users (id, username, password, enabled) VALUES 
(10001, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1), -- 123456 (MD5 示例,加密存储)
(10002, 'user1', 'e10adc3949ba59abbe56e057f20f883e', 1),
(10003, 'user2', 'e10adc3949ba59abbe56e057f20f883e', 1);

插入角色数据

INSERT INTO roles (id, name, description) VALUES 
(1, 'ADMIN', '系统管理员'),
(2, 'USER', '普通用户'),
(3, 'GUEST', '游客');

绑定用户与角色

INSERT INTO user_roles (user_id, role_id) VALUES 
(10001, 1), -- admin 绑定管理员角色
(10002, 2), -- user1 绑定普通用户角色
(10003, 3); -- user2 绑定游客角色

插入权限数据

INSERT INTO permissions (id, name, description) VALUES 
(1, 'user:read', '读取用户信息'),
(2, 'user:write', '修改用户信息'),
(3, 'menu:read', '查看菜单'),
(4, 'menu:write', '管理菜单');

绑定角色与权限

INSERT INTO role_permissions (role_id, permission_id) VALUES 
(1, 1), -- 管理员可以读取用户信息
(1, 2), -- 管理员可以修改用户信息
(1, 3), -- 管理员可以查看菜单
(1, 4), -- 管理员可以管理菜单
(2, 1), -- 普通用户可以读取用户信息
(3, 3); -- 游客仅能查看菜单

插入菜单数据

INSERT INTO menus (id, name, url, parent_id, component, order_index) VALUES 
(1, '系统管理', NULL, NULL, 'SystemManage', 1),
(2, '用户管理', '/users', 1, 'UserManage', 1),
(3, '角色管理', '/roles', 1, 'RoleManage', 2),
(4, '权限管理', '/permissions', 1, 'PermissionManage', 3);

绑定角色与菜单

INSERT INTO role_menus (role_id, menu_id) VALUES 
(1, 1), -- 管理员可以访问系统管理菜单
(1, 2), -- 管理员可以访问用户管理
(1, 3), -- 管理员可以访问角色管理
(1, 4), -- 管理员可以访问权限管理
(2, 2), -- 普通用户可以访问用户管理
(3, 4); -- 游客仅能访问权限管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值