本篇为Shiro入门案例,使用Spring Boot集成。
1. 引入坐标依赖
有两种方式引入jar包
- SpringBoot starter方式(推荐)
- shiro-spring
1 2 3 4 5
| <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-starter</artifactId> <version>1.4.0</version> </dependency>
|
或者
1 2 3 4 5
| <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency>
|
2. 创建ini文件
Shiro最基础的配置方式,存储用户身份信息(即用户名和密码)
3. 主体代码编写
这里我有点偷懒了,直接在Application的main方法写了,你可以使用单元测试的写法,这样更加专业些。
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
| @SpringBootApplication public class ShiroIniApplication {
public static void main(String[] args) { SpringApplication.run(ShiroIniApplication.class, args);
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); Subject currentUser = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken("lujiahao", "123"); try { currentUser.login(token); System.out.println("用户身份验证:" + currentUser.isAuthenticated()); } catch (UnknownAccountException e) { System.out.println("账户信息错误:无此账户信息"); } catch (IncorrectCredentialsException e) { System.out.println("密码错误!"); } catch (Exception e) { e.printStackTrace(); } currentUser.logout(); System.out.println("用户身份验证:" + currentUser.isAuthenticated()); } }
|
4. 运行结果
正常执行:
1 2
| 用户身份验证:true 用户身份验证:false
|
账户不存在:
1 2
| 账户信息错误:无此账户信息 用户身份验证:false
|
修改代码中的用户名,与ini文件中不一致即可
密码错误:
修改代码中的密码,与ini文件中不一致即可
参考资料
代码获取
https://github.com/lujiahao0708/LearnSpring
Tips
欢迎收藏和转发,感谢你的支持!(๑•̀ㅂ•́)و✧
欢迎关注我:后端小哥,专注后端开发,希望和你一起进步!