【修真院java小课堂】Shiro

大家好,我是IT修真院郑州分院第8期学员,一枚正直善良的java程序员。今天给大家分享一下,修真院官网 java任务中可能会使用到的知识点:


Shiro


width="640" height="498" src="https://v.qq.com/iframe/player.html?vid=b0770ww5e8a&tiny=0&auto=0" allowfullscreen="">

【修真院java小课堂】Shiro

1.背景介绍

  • 在2008年进入Apache软件基金会之前,Shiro已经有5年历史,之前被称为JSecurity项目,该项目始于2003年初。2003年,Java应用程序开发人员的通用安全替代方案并不多 - 我们能用的是Java身份认证和授权服务,也称为JAAS。
  • JAAS存在许多缺点 - 虽然其身份验证功能在某种程度上是可以容忍的,但授权方面使用起来很晦涩且令人沮丧。此外,JAAS严重依赖于虚拟机级安全问题,例如,确定是否应允许在JVM中加载类。作为一名应用程序开发人员,我更关心应用程序最终用户可以做什么而不是我的代码在JVM中可以做什么。
  • 由于当时正在使用的应用程序,需要访问一个干净的,与容器无关的会话机制。而当时唯一的会话选择是HttpSessions,它需要一个Web容器,或EBJ 2.1 Stateful Session Beans,它需要一个EJB容器。我需要一些可以与容器分离的东西,可以在我选择的任何环境中使用。
  • 最后,还有加密问题。有时候我们都需要保证数据的安全,但除非你是加密专家,否则Java加密体系结构很难理解。API充满了检查异常,并且使用起来很麻烦。我希望有一个更清晰的开箱即用的解决方案,可以根据需要轻松加密和解密数据。
  • 因此,从2003年初的安全状况来看,您可以很快意识到在单一,有凝聚力的框架中没有任何东西可以满足所有这些要求。正因为如此,JSecurity,以及后来的Apache Shiro诞生了。

2.知识剖析

2.1 Shiro是什么?

  • Apache Shiro(发音为“shee-roh”,日语中的’castle’)是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理,并可用于保护任何应用程序 - 从命令行应用程序,移动应用程序到最大的Web和企业应用程序。

2.2 Shiro功能

2.3 为什么要使用shiro?


3.常见问题

3.1 Shiro和Spring Security对比

  • 1.Shiro比Spring更容易使用,实现和最重要的理解
  • 2.Spring Security更加知名的唯一原因是因为品牌名称
  • 3.“Spring”以简单而闻名,但讽刺的是很多人发现安装Spring Security很难
  • 4.然而,Spring Security却有更好的社区支持
  • 5.Apache Shiro在Spring Security处理密码学方面有一个额外的模块
  • 6.Spring-security 对spring 结合较好,如果项目用的springmvc,使用起来很方便。但是如果项目中没有用到spring,那就不要考虑它了。
  • 7.Shiro 功能强大、且 简单、灵活。是Apache 下的项目比较可靠,且不跟任何的框架或者容器绑定,可以独立运行

4.编码实战

  • 简单权限管理
  • 具体见视频

5.扩展思考

5.1 Shiro目前应用在哪较多

  • Shiro及其前身JSecurity多年来一直在各种规模和行业的公司项目中使用。自从成为Apache软件基金会顶级项目以来,网站流量和采用率持续显着增长。许多开源社区也在使用Shiro,例如Spring,Grails,Wicket,Tapestry,Tynamo,Mule和Vaadin,仅举几例。
  • 像Katasoft,Sonatype,MuleSoft这样的主要社交网络之一的商业公司,以及不止一些纽约商业银行使用Shiro来保护他们的商业软件和网站。

6.参考文献

https://baike.baidu.com/item/shiro/17753571
https://www.infoq.com/articles/apache-shiro
http://shiro.apache.org/


7.更多讨论

Q:一直在使用 Spring,应用程序的安全组件早已选择了 Spring Security,为什么还需要 Shiro ?
A:因为shiro更简单灵活,Shiro 在使用上较 Spring Security 更简单,更容易理解

Q:对数据权限的支持? 在业务系统中定义??
A:shiro仅仅实现对操作权限的控制,用于在前端控制元素隐藏或者显示,以及对资源访问权限进行检查。数据权限与具体的业务需求紧密关联,shiro本身无法实现对数据权限的控制。

Q:shiro支持动态权限分配?
A:扩展org.apache.shiro.realm.Realm,支持动态权限分配。

PPT在这里

感谢大家观看!

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。

快来与我一起学习吧~http://www.jnshu.com/login/1/22140638

你可能感兴趣的:(【修真院java小课堂】Shiro)