首页 Shiro学习

Shiro学习

举报
开通vip

Shiro学习Shiro学习 Shiro简介 Apache Shiro是java的安全框架。Shiro可以非常容易的开发出足够好的应用,可以帮我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。 Authentication:身份认证/登录,验证用户是不是拥有相应的身份; Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager:会话管理,即用...

Shiro学习
Shiro学习 Shiro简介 Apache Shiro是java的安全框架。Shiro可以非常容易的开发出足够好的应用,可以帮我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。 Authentication:身份认证/登录,验证用户是不是拥有相应的身份; Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的; Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; Web Support:Web支持,可以非常容易的集成到Web环境; Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率; Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; Testing:提供测试支持; Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问; Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。 记住一点,Shiro不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro即可。 2.身份验证 2.2  环境准备 1.    2.        3.         junit   4.         junit   5.         4.9   6.        7.        8.         commons-logging   9.         commons-logging   10.         1.1.3   11.        12.        13.         org.apache.shiro   14.         shiro-core   15.         1.2.2   16.        17.     添加junit、common-logging及shiro-core依赖即可。 2.3  登录/退出 1、首先准备一些用户身份/凭据(shiro.ini) Java代码   1. [users]   2. zhang=123   3. wang=123   此处使用ini配置文件,通过[users]指定了两个主体:zhang/123、wang/123。 2、测试用例(com.github.zhangkaitao.shiro.chapter2.LoginLogoutTest)  Java代码   1. @Test   2. public void testHelloworld() {   3.     //1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager   4.     Factory factory =   5.             new IniSecurityManagerFactory("classpath:shiro.ini");   6.     //2、得到SecurityManager实例 并绑定给SecurityUtils   7.     org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();   8.     SecurityUtils.setSecurityManager(securityManager);   9.     //3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)   10.     Subject subject = SecurityUtils.getSubject();   11.     UsernamePasswordToken token = new UsernamePasswordToken("zhang", "123");   12.    13.     try {   14.         //4、登录,即身份验证   15.         subject.login(token);   16.     } catch (AuthenticationException e) {   17.         //5、身份验证失败   18.     }   19.    20.     Assert.assertEquals(true, subject.isAuthenticated()); //断言用户已经登录   21.    22.     //6、退出   23.     subject.logout();   24. }   25.     2.1、首先通过new IniSecurityManagerFactory并指定一个ini配置文件来创建一个SecurityManager工厂; 2.2、接着获取SecurityManager并绑定到SecurityUtils,这是一个全局设置,设置一次即可; 2.3、通过SecurityUtils得到Subject,其会自动绑定到当前线程;如果在web环境在请求结束时需要解除绑定;然后获取身份验证的Token,如用户名/密码; 2.4、调用subject.login方法进行登录,其会自动委托给SecurityManager.login方法进行登录; 2.5、如果身份验证失败请捕获AuthenticationException或其子类,常见的如: DisabledAccountException(禁用的帐号)、LockedAccountException(锁定的帐号)、UnknownAccountException(错误的帐号)、ExcessiveAttemptsException(登录失败次数过多)、IncorrectCredentialsException (错误的凭证)、ExpiredCredentialsException(过期的凭证)等,具体请查看其继承关系;对于页面的错误消息展示,最好使用如“用户名/密码错误”而不是“用户名错误”/“密码错误”,防止一些恶意用户非法扫描帐号库; 2.6、最后可以调用subject.logout退出,其会自动委托给SecurityManager.logout方法退出。 从如上代码可 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 出身份验证的步骤: 1、收集用户身份/凭证,即如用户名/密码; 2、调用Subject.login进行登录,如果失败将得到相应的AuthenticationException异常,根据异常提示用户错误信息;否则登录成功; 3、最后调用Subject.logout进行退出操作。 如上测试的几个问题: 1、用户名/密码硬编码在ini配置文件,以后需要改成如数据库存储,且密码需要加密存储; 2、用户身份Token可能不仅仅是用户名/密码,也可能还有其他的,如登录时允许用户名/邮箱/手机号同时登录。  3.授权 3.1Shiro的三种方式授权 编程式:通过写if/else授权代码块完成 Subject subject=SecuriryUtils.getSubject(); If(subject.hasRole(“admin”)){ //有权限 }else{ //无权限 } 注解式:通过在执行的java方法上放置相应的注解完成 @RequiresRoles(“admin”) Public void hello(){ //有权限 } JSP/GSP标签:在JSP/GSP页面通过相应的标签完成
本文档为【Shiro学习】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_654168
暂无简介~
格式:doc
大小:30KB
软件:Word
页数:0
分类:互联网
上传时间:2019-09-12
浏览量:16