jeecg数据权限
发布日期:2021-05-12 13:49:27 浏览次数:22 分类:精选文章

本文共 2249 字,大约阅读时间需要 7 分钟。

角色管理与权限配置

在一个典型的后台管理系统中,用户权限管理通常涉及多个数据库表的关系和关联。以下是角色管理、菜单创建及用户权限配置的详细说明。

1. 新建角色

首先,我们需要使用sys_role表来创建新的角色。该表包含以下字段:

  • id:角色标识符,自动递增。
  • role_name:角色名称。
  • role_code:角色编码,通常为唯一且有特定含义的字符串。
  • description:角色说明或备注。
  • create_by:创建该角色的人员。
  • create_time:记录创建时间。

创建新角色时,通常需要执行以下SQL语句:

INSERT INTO sys_role (id, role_name, role_code, description, create_by, create_time) VALUES (?, ?, ?, ?, ?, ?)

其中,?表示待传递的参数,如角色名称和编码等。数据库会自动生成唯一的id,并记录创建时间和操作人。

2. 新建菜单

菜单管理模块使用sys_menu表来记录系统菜单项。这表包含字段:

  • id:菜单标识符。
  • parent_id:菜单的父类ID,用于树状结构。
  • menu_name:菜单名称。
  • display_name:显示在UI中的名称,允许修改。
  • menu_type:菜单类型(如按钮、链接等)。
  • sort_no:菜单排序顺序。
  • icon:显示的图标。
  • url:菜单链接。
  • 状态:是否可用(默认为可用)。

创建新菜单时,使用以下查询:

INSERT INTO sys_menu (parent_id, menu_name, display_name, menu_type, sort_no, icon, url) VALUES (?, ?, ?, ?, ?, ?, ?)

3. 向角色中添加显示的菜单

在完成新菜单创建后,需要将这些菜单分配给特定角色。这一过程使用sys_role_permission表,它记录角色的菜单权限。该表包含以下字段:

  • id:记录唯一标识符。
  • role_id:对应sys_role表的id
  • permission_id:对应sys_menu表的id

将菜单分配给角色时,执行以下插入语句:

INSERT INTO sys_role_permission (id, role_id, permission_id) VALUES (?, ?, ?)

4. 新建用户

用户管理流程涉及两张表:sys_usersys_user_rolesys_user表用于记录用户信息,字段包括:

  • id:用户唯一标识符。
  • username:用户登录名。
  • realname:用户实际名字。
  • password:用户密码。
  • salt:用于加密的随机字符串。
  • birthday:用户生日。
  • sex:用户性别。
  • status:用户状态(确认或不可用)。
  • del_flag:是否删除账户。
  • create_by:创建用户的人员。
  • create_time:记录创建时间。

创建用户时,执行以下查询:

INSERT INTO sys_user (id, username, realname, password, salt, birthday, sex, status, del_flag, create_by, create_time, activiti_sync) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

5. 为角色分配用户

创建用户后,需要将其分配到指定的角色中。使用sys_user_role表,字段包括:

  • id:主键。
  • user_id:对应sys_user表的id
  • role_id:对应sys_role表的id

分配用户与角色的代码如下:

INSERT INTO sys_user_role (id, user_id, role_id) VALUES (?, ?, ?)

6. 关联和关联查询解释

了解完基本操作后,我们需要理解用户权限的相关查询。系统管理中常见的查询包括获取特定用户的权限。以下是一个复杂查询的简要说明:

SELECT p.* FROM sys_permission p
WHERE EXISTS (
SELECT a.id FROM sys_role_permission a
JOIN sys_role b ON a.role_id = b.id
JOIN sys_user_role c ON c.role_id = b.id
JOIN sys_user d ON d.id = c.user_id
WHERE p.id = a.permission_id AND d.username = 'admin'
) AND p.del_flag = 0
ORDER BY p.sort_no ASC

这个查询实现了多级关联:

  • sys_user表获取管理员账户(d.username = 'admin')。
  • sys_user_role表获取该管理员关联的角色ID。
  • sys_role表获取特定角色的信息。
  • sys_role_permission表获取该角色被赋予的权限ID。
  • Final sys_permission表获取所有相关权限,并按排序字段排列。
  • 通过这样的查询,可以清楚地看到用户权限的全貌,有助于进行权限管理和查看。

    上一篇:having 语法
    下一篇:jeecg系统管理的其他功能

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年05月02日 06时06分52秒