星空网 > 软件开发 > 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框架源码下载】




原标题:跟我学习shiro权限框架(第 二天)

关键词:Shiro

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

国际商标注册:官网即刻推出,尽享超越界限的商标保护。:https://www.kjdsnews.com/a/1314006.html
国家就国际商标的补贴政策实施情况进行综合评估:https://www.kjdsnews.com/a/1314007.html
国外商标注册:服务实力强,让你轻松出海:https://www.kjdsnews.com/a/1314008.html
国外品牌在国内申请商标注册:破解复杂的流程与细节:https://www.kjdsnews.com/a/1314009.html
国外品牌商标有什么新技术你必须知道!:https://www.kjdsnews.com/a/1314010.html
国内商标:唯一性是否有保障?:https://www.kjdsnews.com/a/1314011.html
TikTok 将推出先买后付服务 :https://www.kjdsnews.com/a/1836651.html
TikTok 将推出先买后付服务 :https://www.goluckyvip.com/news/188219.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流