Shiro身份验证Test

pom.xml
<dependencies>
     <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>
 </dependencies> 

添加 junit、common-logging 及 shiro-core 依赖即可


shiro.ini

[users] 
zhang=123 
wang=123 


LoginLogoutTest.java

public class LoginLogoutTest {
	@Test 
	public void testHelloworld() { 
		//1、获取 SecurityManager 工厂,此处使用 Ini 配置文件初始化 SecurityManager     
		Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");     
		//2、得到 SecurityManager 实例 并绑定给 SecurityUtils     
		org.apache.shiro.mgt.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);     
	    	} catch (AuthenticationException e) {         
	    		//5、身份验证失败    
	    	}  
	    
	    Assert.assertEquals(true, subject.isAuthenticated()); //断言用户已经登录  
	    //6、退出     
	    subject.logout(); 
	    } 
}
从如上代码可总结出身份验证的步骤:

 1、收集用户身份/凭证,即如用户名/密码;

 2、调用 Subject.login 进行登录,如果失败将得到相应的 AuthenticationException 异常,根 据异常提示用户错误信息;否则登录成功;

 3、最后调用 Subject.logout 进行退出操作。  

如上测试的几个问题: 

1、用户名/密码硬编码在 ini 配置文件,以后需要改成如数据库存储,且密码需要加密存储;

 2、用户身份 Token 可能不仅仅是用户名/密码,也可能还有其他的,如登录时允许用户名/ 邮箱/手机号同时登录。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值