这里通过链式hashmap添加进去接口权限,用安全管理器设置过滤,并且设置登录跳转(登录页面需要自己写,shiro不提供,不像springboot那样智能)
效果如下:
点击add和update均跳转到如下登录页面
那么完善认证部分
进行账户密码判断
当输入错误用户名,效果:
当输入正确用户名,错误密码
输入正确用户名密码
登录成功
可以正常访问
接下来连接数据库
需要如下依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<!--引入mybatis,这是Mybatis官方提供的适配Spring Boot的,而不是Spring Boot自己的-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
测试:
可以看到测试类成功查出
那么我们放到项目中测试,修改如下:
测试结果:
可以看到成功通过mysql数据库获取数据并认证
但是这里我们的密码明文也可以认证,是不安全的,
调试发现使用SimpleCredentialsMatcher类型,因此可以明文认证,我们应该用加密的认证才更安全
我们来看授权流程
我们再ShiroConfig中加入授权条件
效果
访问/user/add会返回401,说明未授权
访问/user/update正常
我们这里添加一个未授权页面
当访问时候会跳转到noauth页面
我们写一个给用户授权的功能
这样所有登录的用户都会被授权
可以看到都会被授权