你的位置:首页 > Java教程

[Java教程]跟我学习shiro权限框架(第 二天)


shiro认证入门程序

shiro-first.ini

通过此配置文件创建securityManager工厂。

 

需要修改eclipse的ini的编辑器:  

入门程序代码

Java代码  

  1. // 用户登陆和退出  
  2.     @Test  
  3.     public void testLoginAndLogout() {  
  4.   
  5.         // 创建securityManager工厂,通过ini配置文件创建securityManager工厂  
  6.         Factory<SecurityManager> factory = new IniSecurityManagerFactory(  
  7.                 "classpath:shiro-first.ini");  
  8.           
  9.         //创建SecurityManager  
  10.         SecurityManager securityManager = factory.getInstance();  
  11.           
  12.         //将securityManager设置当前的运行环境中  
  13.         SecurityUtils.setSecurityManager(securityManager);  
  14.           
  15.         //从SecurityUtils里边创建一个subject  
  16.         Subject subject = SecurityUtils.getSubject();  
  17.           
  18.         //在认证提交前准备token(令牌)  
  19.         UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "111111");  
  20.   
  21.         try {  
  22.             //执行认证提交  
  23.             subject.login(token);  
  24.         } catch (AuthenticationException e) {  
  25.             // TODO Auto-generated catch block  
  26.             e.printStackTrace();  
  27.         }  
  28.           
  29.         //是否认证通过  
  30.         boolean isAuthenticated =  subject.isAuthenticated();  
  31.           
  32.         System.out.println("是否认证通过:" + isAuthenticated);  
  33.           
  34.         //退出操作  
  35.         subject.logout();  
  36.           
  37.         //是否认证通过  
  38.         isAuthenticated =  subject.isAuthenticated();  
  39.           
  40.         System.out.println("是否认证通过:" + isAuthenticated);  
  41.           
  42.           
  43.   
  44.     }  

// 用户登陆和退出	@Test	public void testLoginAndLogout() {		// 创建securityManager工厂,通过ini配置文件创建securityManager工厂		Factory<SecurityManager> factory = new IniSecurityManagerFactory(				"classpath:shiro-first.ini");				//创建SecurityManager		SecurityManager securityManager = factory.getInstance();				//将securityManager设置当前的运行环境中		SecurityUtils.setSecurityManager(securityManager);				//从SecurityUtils里边创建一个subject		Subject subject = SecurityUtils.getSubject();				//在认证提交前准备token(令牌)		UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "111111");		try {			//执行认证提交			subject.login(token);		} catch (AuthenticationException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}				//是否认证通过		boolean isAuthenticated = subject.isAuthenticated();				System.out.println("是否认证通过:" + isAuthenticated);				//退出操作		subject.logout();				//是否认证通过		isAuthenticated = subject.isAuthenticated();				System.out.println("是否认证通过:" + isAuthenticated);					}

 执行流程

Java代码  

  1. 1、通过ini配置文件创建securityManager  
  2. 2、调用subject.login方法主体提交认证,提交的token  
  3. 3、securityManager进行认证,securityManager最终由ModularRealmAuthenticator进行认证。  
  4. 4、ModularRealmAuthenticator调用IniRealm(给realm传入token) 去ini配置文件中查询用户信息  
  5. 5、IniRealm根据输入的token(UsernamePasswordToken)从 shiro-first.ini查询用户信息,根据账号查询用户信息(账号和密码)  
  6.     如果查询到用户信息,就给ModularRealmAuthenticator返回用户信息(账号和密码)  
  7.     如果查询不到,就给ModularRealmAuthenticator返回null  
  8. 6、ModularRealmAuthenticator接收IniRealm返回Authentication认证信息  
  9.     如果返回的认证信息是null,ModularRealmAuthenticator抛出异常(org.apache.shiro.authc.UnknownAccountException)  
  10.   
  11.     如果返回的认证信息不是null(说明inirealm找到了用户),对IniRealm返回用户密码 (在ini文件中存在)和 token中的密码 进行对比,如果不一致抛出异常(org.apache.shiro.authc.IncorrectCredentialsException)  

1、通过ini配置文件创建securityManager2、调用subject.login方法主体提交认证,提交的token3、securityManager进行认证,securityManager最终由ModularRealmAuthenticator进行认证。4、ModularRealmAuthenticator调用IniRealm(给realm传入token) 去ini配置文件中查询用户信息5、IniRealm根据输入的token(UsernamePasswordToken)从 shiro-first.ini查询用户信息,根据账号查询用户信息(账号和密码)	如果查询到用户信息,就给ModularRealmAuthenticator返回用户信息(账号和密码)	如果查询不到,就给ModularRealmAuthenticator返回null6、ModularRealmAuthenticator接收IniRealm返回Authentication认证信息	如果返回的认证信息是null,ModularRealmAuthenticator抛出异常(org.apache.shiro.authc.UnknownAccountException)	如果返回的认证信息不是null(说明inirealm找到了用户),对IniRealm返回用户密码 (在ini文件中存在)和 token中的密码 进行对比,如果不一致抛出异常(org.apache.shiro.authc.IncorrectCredentialsException)

 小结

Java代码  

  1. ModularRealmAuthenticator作用进行认证,需要调用realm查询用户信息(在数据库中存在用户信息)  
  2. ModularRealmAuthenticator进行密码对比(认证过程)。  
  3.       
  4. realm:需要根据token中的身份信息去查询数据库(入门程序使用ini配置文件),如果查到用户返回认证信息,如果查询不到返回null。  

ModularRealmAuthenticator作用进行认证,需要调用realm查询用户信息(在数据库中存在用户信息)ModularRealmAuthenticator进行密码对比(认证过程)。	realm:需要根据token中的身份信息去查询数据库(入门程序使用ini配置文件),如果查到用户返回认证信息,如果查询不到返回null。

 

 

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

【java框架源码下载】