Shiro-ini认证
Posted 998295czjzyt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shiro-ini认证相关的知识,希望对你有一定的参考价值。
#2019.2.2
shiro的ini认证
先用IDEA创建一个普通的MAVEN项目,并导入依赖
<!--Junit单元测试--> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!--日志--> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <!--shiro--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.2</version> </dependency>
接下来用ini的文件代替数据库,在资源文件中创建一个shiro.ini文件。并进行配置
上面是ini文件的固定写法,“zhangsan”相当于身份信息(账号),"666"相当于凭证信息(密码)
配置完之后,进行测试。
1.使用IniSecurityManagerFacrory方法加载配置文件,创建Factory对象
2.通过工厂对象获取Security Manager对象
3.将Security Manager绑定到程序内,以便于调用
4.创建当前的主体
5.收集主体对象的身份信息以及凭证信息
6.登录验证
1 //1.创建Secutiry Manager工厂对象:加载配置文件
2 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
3 //2.通过工厂对象获取Security Manager对象
4 SecurityManager securityManager = factory.getInstance();
5 //3.绑定securityManagerd到当前程序中,以便于访问
6 SecurityUtils.setSecurityManager(securityManager);
7
8 //4.创建当前的Subject 主体 没有经过验证
9 Subject sub = SecurityUtils.getSubject();
10 //5.收集主体 的身份信息和凭证信息
11 UsernamePasswordToken token = new UsernamePasswordToken("zhangsan","666");
12 //6.登录验证
13 sub.login(token);
之后我们采用isAuthenticated的方法验证是否通过。若账号密码和ini文件的配置相符合,则返回true,反之为false。
在我们logout()后,在进行验证则会返回false。
要注意的是:若账号有误,则出现以下异常(账户未知异常):
若密码错误,则出现以下异常():
以上是关于Shiro-ini认证的主要内容,如果未能解决你的问题,请参考以下文章
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段