跟我学习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配置文件创建securityManager
2、调用subject.login方法主体提交认证,提交的token
3、securityManager进行认证,securityManager最终由ModularRealmAuthenticator进行认证。
4、ModularRealmAuthenticator调用IniRealm(给realm传入token) 去ini配置文件中查询用户信息
5、IniRealm根据输入的token(UsernamePasswordToken)从 shiro-first.ini查询用户信息,根据账号查询用户信息(账号和密码)
	如果查询到用户信息,就给ModularRealmAuthenticator返回用户信息(账号和密码)
	如果查询不到,就给ModularRealmAuthenticator返回null
6、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框架源码下载】

你可能感兴趣的:(shiro)