SpringBoot整合Shiro

shiro-demo 测试源码
话说前面,感觉不太好用,没有Security舒服。
在早年前,学过一次,都忘记了。

环境搭建

1)、导入依赖
2)、编写自定义Realm

3)、配写ShiroConfig,配置三个Bean

在这里插入图片描述

4)、此时我们测试一下,可以正常访问
在这里插入图片描述

添加拦截

1)、添加授权,给add,update添加,需要认证才可以访问。可以支持*星号进行通配
注意:这里是LinkedHashMap,上面的优先级最大
在这里插入图片描述

2)、此时,我们再次访问,会发现此时的add,update都404失效了,URL会自动调整到login.jsp页面
在这里插入图片描述

自定义拦截页面

1)、添加login页面

2)、添加Controller中映射方法

3)、设置login页面
在这里插入图片描述

4)、未通过认证,会自动跳转至login页面,还可以自定义登录成功页面,未授权页面
在这里插入图片描述

认证

1)、编写login页面,修改提交地址,对登录失败进行消息捕获

2)、添加Controller中映射方法,封装账号密码做为Token,使用login进行登录,执行login方法会执行自定义认证方法

3)、编写自定义认证规则,判断模拟数据库查询到数据,进行校验账号,密码由shiro来处理。
在这里插入图片描述

4)、测试登录
在这里插入图片描述

整合MyBatis

1)、添加依赖:mybatis,druid,mysql,log4j,lombok

2)、添加User

3)、添加UserMapper,UserMapper.xml

4)、添加UserService,UserServiceImpl

5)、main中添加注解扫描

6)、配置yml:DataSource,Druid,MyBatis

在这里插入图片描述

7)、修改认证方法
在这里插入图片描述

8)、数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
Navicat MySQL Data Transfer

Source Server : 192.168.1.1@root
Source Server Version : 80020
Source Host : 192.168.1.1:3306
Source Database : shiro

Target Server Type : MYSQL
Target Server Version : 80020
File Encoding : 65001

Date: 2020-07-08 13:29:34
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int NOT NULL,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`perms` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'root', '123456', '');
INSERT INTO `user` VALUES ('2', 'daniu', '123', 'user:add');
INSERT INTO `user` VALUES ('3', 'erdan', '456', 'user:update');

9)、测试登录
在这里插入图片描述

授权

1)、添加权限控制之后,再进行访问,发现访问错误
注意:这里是LinkedHashMap,上面的优先级最大
在这里插入图片描述

2)、默认是报错太不友好了,我们可以让它跳转到指定的页面
在这里插入图片描述

3)、设置给予权限
在这里插入图片描述

4)、从数据库读取权限
在这里插入图片描述

5)、测试,权限
在这里插入图片描述

整合Thymeleaf

1)、导入依赖

2)、注入Bean

3)、登录成功把用户存入session

4)、修改index页面,导入命名空间

更多shiro标签的使用,查看 https://github.com/theborakompanioni/thymeleaf-extras-shiro
在这里插入图片描述

5)、测试
在这里插入图片描述