最近公司让做个权限管理模块
总结下来大概有三个方法:
一、RBAC 2.0 角色管理
二、使用shiro框架
三、JSP页面中写java代码
这里就重点记录一下第一种RBAC角色管理的方法
RBAC的重点就在于与角色的关联
首先也就是最重要的就是数据库的设计了
USERS表
CREATE TABLE `users` (
`id` int(64) NOT NULL AUTO_INCREMENT,
`username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`password` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`rid` int(64) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
MENU表
CREATE TABLE `menu` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`pid` int(10) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
ROLE表
CREATE TABLE `role` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
ROLE_MENU表
CREATE TABLE `role_menu` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`rid` int(10) NULL DEFAULT NULL,
`mid` int(10) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
这是数据库的外连接,在数据库设计的时候不需要写出来,自己清楚就行,这样就提高了开发的便捷性,损失了安全性
其次是项目里Mapper..xml中SQL语句的书写
MenuMapper.xml中
<select id="selByRid" resultMap="mmap">
select m.* ,#{rid} rid
from Menu m join
role_menu r on r.mid = m.id
where r.rid = #{rid} and m.pid=#{pid}
</select>
UserMapper.xml中
<select id="selByUser" resultType="users">
select * from users where username = #{username} and password = #{password}
</select>
最后就是其他代码的书写了,项目源码见
https://download.csdn.net/download/fungli_notlove/11823834
纯属个人记录,还请各位大佬不喜勿喷!