大家好,我是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相关推荐

  1. 【修真院java小课堂】ArrayList浅析

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

  2. 【修真院Java小课堂】Annotation注解

    标题: [修真院Java小课堂]Annotation注解 开场语: 大家好,我是IT修真院西安分院第三期学员,一枚正直纯洁善良的JAVA程序员,今天给大家分享一下,修真院官网JAVA任务七,深度思考中 ...

  3. 【修真院JAVA小课堂】redis缓存集群简单介绍

    大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员. 今天给大家分享一下,redis缓存集群简单介绍. 1.背景介绍 redis是一个key-value存储系统.和 ...

  4. 【修真院java小课堂】clean,install,package,deploy分别代表什么含义?

    大家好,我是IT修真院成都分院第12期学员,一枚正直善良的java程序员. 今天给大家分享一下,修真院官网java任务一中可能会使用到的知识点: clean,install,package,deplo ...

  5. 【修真院JAVA小课堂】什么是压测,为什么要进行压力测试?JMETER工具的使用

    大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员. 今天给大家分享一下,什么是压测,为什么要进行压力测试?JMETER工具的使用. 1.背景介绍 压测,即压力测试 ...

  6. 【修真院Java小课堂】Tiles框架简单介绍

    大家好,我是IT修真院上海分院第6期的学员,一枚正直纯洁善良的程序员 今天给大家分享一下,Tiles框架简单介绍 Tiles框架简单介绍 背景介绍 什么是Tiles Tiles 是一种JSP布局框架, ...

  7. 【修真院WEB小课堂】定时器有哪些用法?

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [定时器有哪些用 ...

  8. 【修真院pm小课堂】详谈用户体验五要素

    [修真院pm小课堂]详谈用户体验五要素 用户体验五要素在产品的工作中经常听到,那么他究竟是什么呢?怎样去使用呢? 一.战略层 明确商业目标和用户目标,解决两者之间的冲突,找到平衡点,确定产品原则和定位 ...

  9. 【修真院web小课堂】请描述 BFC(Block Formatting Context) 及其如何工作

    请描述 BFC(Block Formatting Context) 及其如何工作 小课堂[北京-WEB-A组] 分享人:要来点本子吗 大家好,我是IT修真院北京分院第35期的学员,一枚正直.纯洁.善良 ...

  10. 【修真院web小课堂】angular js常用指令 ng-blur、ng-change、ng-focus、ng-disabled是如何运用到表单验证中的?

    大家好,我是IT修真院武汉分院web第16期的学员孟晨,一枚正直纯洁善良的web程序员 今天给大家分享一下,修真院官网js(职业)任务八,深度思考中的知识点--angular js常用指令 ng-bl ...

最新文章

  1. 论海明威的存在主义宗教意识——存在主义虚无主义。注:部分观点个人不赞同...
  2. 记一次CTF实验吧的代码审计
  3. python处理表格很厉害么_Python读写Excel表格,就是这么简单粗暴又好用
  4. 利用Python对文件进行批量重命名——以图片文件为例
  5. 找出一个字符串中出现次数最多的字_海量数据中找出前k大数(topk问题)
  6. SpringMVC接收Post的实体/JSon数据
  7. Linux下如何杀死终端
  8. Exchange 2010 批量移动邮箱和增加移动请求并发数
  9. Linux驱动之分层框架
  10. 栈-剑指 Offer 30. 包含min函数的栈
  11. 用latex生成pdf文件后,文本复制粘贴显示乱码
  12. 转:adb连接手机进行调试有两种方式
  13. Vue+百度地图api
  14. 基于OpenCV的多目标动态检测与跟踪
  15. [转载]autorun.inf病毒源代码
  16. 如何利用注册表修改开机启动程序并提高电脑开机速度!
  17. 离散信号内插和抽取Matlab,抽取与内插的频谱分析
  18. 美颜SDK有什么用?美颜SDK可以在直播和短视频中有哪些作用?
  19. 亚马逊卖家,为什么你做不出爆品?从动森看大火之道
  20. Accumulation Degree --- 换根dp

热门文章

  1. 何为挂载(mount)?
  2. Apostrophe not preceded by \
  3. ibm tivoli_调优IBM DB2以获得最佳的IBM Tivoli Security Operations Manager性能
  4. oracle delete加并发,并发delete导致oracle***锁问题的解决
  5. 【C++/OOP】(侯捷著) (转)
  6. Feign与Gateway
  7. iOS源码资源之各种项目源码汇总
  8. 浏览器内部工作原理[译]How browsers work (转)
  9. 2018年支付行业回顾
  10. Matlab论文插图绘制模板第46期—帕累托图(Pareto)