1.概念了解
使用shiro主要了解几个概念
1.身份验证:即在应用中谁能证明他就是他本人。
2.principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。
3.credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等。
2.环境准备
1.本文使用maven构建,环境依赖如下
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.2</version>
</dependency>
2.用户身份/凭据(shiro.ini),放在class文件根目录
[users]
zhang=123
wang=123
3.测试
@Test
public void testHelloworld() {
//1、获取 SecurityManager 工厂,此处使用 Ini 配置文件初始化SecurityManager
Factory factory =new IniSecurityManagerFactory("classpath:shiro.ini");
//2、得到 SecurityManager 实例 并绑定给SecurityUtils
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
//3、得到 Subject 及创建用户名/密码身份验证 Token(即用户身份/凭证)
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token =new UsernamePasswordToken("zhang","123");
try {
//4、登录,即身份验证
subject.login(token);
System.out.println(token);
}catch (AuthenticationException e) {
//5、身份验证失败
}
//断言用户已经登录
Assert.assertEquals(true, subject.isAuthenticated());
//6、退出
subject.logout();
}
4.运行测试用例
运行结果通过且输出用户token则证明shiro测试通过。
1、收集用户身份/凭证,即如用户名/密码;
2、调用 Subject.login 进行登录,如果失败将得到相应的 AuthenticationException 异常,根据异常提示用户错误信息;否则登录成功;
3、最后调用 Subject.logout 进行退出操作。
(1、用户名/密码硬编码在 ini 配置文件,以后需要改成如数据库存储,且密码需要加密存储; 2、用户身份 Token 可能不仅仅是用户名/密码,也可能还有其他的,如登录时允许用户名/邮箱/手机号同时登录。)
网友评论