java在权限设计时,总共会涉及有哪几张表?

在Java权限设计中,通常基于RBAC(基于角色的访问控制)模型,核心表一般包括以下5张基础表,若涉及组织架构或复杂权限层级,可能扩展更多表。以下是常见设计:

5张基础表

1. 用户表(sys_user

存储用户基本信息,如账号、密码、状态等。

CREATE TABLE sys_user (
    id          BIGINT PRIMARY KEY COMMENT '用户ID',
    username    VARCHAR(50)  NOT NULL COMMENT '登录名',
    password    VARCHAR(100) NOT NULL COMMENT '密码',
    email       VARCHAR(100) COMMENT '邮箱',
    status      TINYINT      NOT NULL DEFAULT 1 COMMENT '状态(0-禁用,1-正常)',
    create_time DATETIME     NOT NULL COMMENT '创建时间'
);

2. 角色表(sys_role

定义系统中的角色(如管理员、普通用户)。

CREATE TABLE sys_role (
    id          BIGINT PRIMARY KEY COMMENT '角色ID',
    role_name   VARCHAR(50) NOT NULL COMMENT '角色名称',
    role_key    VARCHAR(50) NOT NULL COMMENT '角色标识(如admin、user)',
    description VARCHAR(255) COMMENT '角色描述'
);

3. 权限表(sys_permission

记录具体的权限项(如页面访问、按钮操作),可支持树形结构。

CREATE TABLE sys_permission (
    id          BIGINT PRIMARY KEY COMMENT '权限ID',
    name        VARCHAR(50)  NOT NULL COMMENT '权限名称',
    permission_key VARCHAR(100) NOT NULL COMMENT '权限标识(如user:add)',
    type        TINYINT      NOT NULL COMMENT '类型(0-菜单,1-按钮,2-接口)',
    parent_id   BIGINT       DEFAULT 0 COMMENT '父权限ID(用于树形结构)',
    path        VARCHAR(200) COMMENT '资源路径(如URL)'
);

4. 用户-角色关联表(sys_user_role

维护用户与角色的多对多关系。

CREATE TABLE sys_user_role (
    user_id BIGINT NOT NULL COMMENT '用户ID',
    role_id BIGINT NOT NULL COMMENT '角色ID',
    PRIMARY KEY (user_id, role_id)
);

5. 角色-权限关联表(sys_role_permission

维护角色与权限的多对多关系。

CREATE TABLE sys_role_permission (
    role_id       BIGINT NOT NULL COMMENT '角色ID',
    permission_id BIGINT NOT NULL COMMENT '权限ID',
    PRIMARY KEY (role_id, permission_id)
);

扩展表(按需添加) 

6. 部门/组织表(sys_dept

若需按部门控制权限,添加部门信息。

CREATE TABLE sys_dept (
    id          BIGINT PRIMARY KEY COMMENT '部门ID',
    dept_name   VARCHAR(50) NOT NULL COMMENT '部门名称',
    parent_id   BIGINT      DEFAULT 0 COMMENT '父部门ID',
    leader_id   BIGINT COMMENT '部门负责人ID'
);

7. 用户-部门关联表(sys_user_dept

用户与部门的归属关系。

CREATE TABLE sys_user_dept (
    user_id BIGINT NOT NULL COMMENT '用户ID',
    dept_id BIGINT NOT NULL COMMENT '部门ID',
    PRIMARY KEY (user_id, dept_id)
);

8. 数据权限表(sys_data_scope 

控制角色对数据的可见范围(如本部门、自定义等)。

CREATE TABLE sys_data_scope (
    role_id    BIGINT NOT NULL COMMENT '角色ID',
    dept_ids   TEXT COMMENT '可见部门ID集合',
    scope_type TINYINT NOT NULL COMMENT '数据范围类型(1-全部,2-本部门,3-自定义)'
);

9、菜单表(sys_menu) 

 如果系统有界面菜单,并且需要控制菜单的访问权限。

 10、资源表(sys_resource)

如果权限管理涉及到具体的资源(如文件、数据库记录等)。

核心流程

  1. 用户登录:验证用户身份(sys_user)。

  2. 查询角色:通过sys_user_role获取用户角色。

  3. 获取权限:通过sys_role_permission关联角色对应的权限。

  4. 鉴权:检查用户是否拥有访问某资源的权限(如permission_key)。

进阶设计

        1、权限层级:通过parent_id字段实现菜单/权限的树形结构。

        2、细分权限类型:如菜单(页面)、按钮、API接口等(type字段)。

        3、数据权限:通过部门或自定义规则限制数据访问范围。

根据业务复杂度,可灵活调整表结构和字段设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值