Shiro权限认证:角色-菜单-权限数据库设计与建表SQL

需积分: 50 21 下载量 84 浏览量 更新于2024-09-06 收藏 5KB TXT 举报
在Shiro权限认证的实现中,一个常见的设计是利用多对多的关系来管理角色、菜单、用户之间的权限分配。根据提供的文件内容,我们主要关注以下几个关键表及其结构: 1. sys_menu (菜单表) - 这个表用于存储系统中的菜单项,可能包括菜单名称、路径、描述等字段。每个菜单通常有一个唯一的标识符(如`menu_id`),可以有子菜单或者是一级菜单。 2. sys_role_menu (角色菜单关联表) - 这是一个多对多关联表,用来记录每个角色关联到哪些菜单。它通常包含角色ID(`role_id`)和菜单ID(`menu_id`),用于维护角色与菜单之间的关系,允许一个角色拥有多个菜单权限。 3. sys_authorities (权限表) - 权限表用于存储更抽象的权限,可能包含权限类型(如操作权限、查看权限等)以及对应的标识。每个权限也有其唯一标识(如`authority_id`)。 4. sys_role_authorities (角色权限关联表) - 类似于sys_role_menu,这个表连接角色和权限,表示一个角色被赋予了哪些具体的权限。通过这个表,可以确定角色所能执行的操作范围。 5. sys_role (角色表) - 角色表存储角色的信息,如角色名称、描述,以及与用户的关系。每个角色可能有多个用户关联。 6. sys_user (用户表) - 用户表包含了用户的基本信息,如用户名(`username`)、密码、昵称等,还可能包括性别、联系方式等个人属性。 7. sys_user_role (用户角色关联表) - 这个表用于将用户和角色关联起来,一个用户可以有多个角色,每个角色又可以赋予不同的权限。关联表可能包含用户ID(`user_id`)和角色ID(`role_id`)字段。 创建`sys_user`表的SQL语句展示了用户表的一些基本结构,如自增的用户ID(`user_id`),用于登录认证的用户名(`username`),密码字段(`password`),以及其他个人信息字段。同时,它还包含UNIQUE和KEY索引,确保用户名的唯一性,并可能通过`true_name`字段与其他表进行外键关联。 在实际的权限控制中,当用户登录时,Shiro会根据用户的角色来查询sys_role_authorities表,获取该角色的所有权限,然后通过这些权限进一步决定用户能够访问哪些菜单或执行哪些操作。通过这种方式,实现了灵活的角色管理和权限分配,增强了系统的安全性。