怀英漫谈6-shiro-02

你好,这次我想接着上上次的Shiro的话题,聊聊Shiro怎么用。

上次我们说过Shiro有一个外部视角,也有一个内部视角。而外部视角就是通过应用(Application Code)接收验证信息,将验证信息封装成验证对象(Subject),并将该对象传给SSM(Shiro SecurityManager),最后再由Realm做最终的验证。SSM就相当于一个代理机构,而真正干活的是其下属的Realm。

内部视角更多地关注Shiro SecurityManager。也就是回答了“SSM内部是如何将对象信息传递给Realm,Realm是如何验证的”这两个问题。首先,SecurityManager会接收封装成token对象的待验证信息,接收到这个token对象之后,SecurityManager会将其发送给Authenticator,Authenticator才是真正的身份验证者,Shiro API中核心身份认证入口点。一些特殊的情况下,需要特殊的验证流程的,可以通过重写该对象来插入自己的实现。Authenticator拿到token之后会直接将其交给它手下的AuthenticationStrategy,此时为什么不直接验证呢,因为验证的方式可能有邮箱,手机,用户名多种,而这些验证方式的种类只有AuthenticationStrategy知道,所以交给它是最高效的一种方式。对了,每一种不同的验证方式其实就是一个Realm对象,当AuthenticationStrategy拿到token之后会将其分发给出Realm,再通过Realm返回的每个成功或失败的登录信息的比对,确定最终的验证结果。

上面的话有些官方了,举个例子说应该会更好理解。蒋介石某日想要重用阎宝航(中共红色间谍),于是他就打电话给军统(SecurityManager),验证他的身份。而军统正真做人事情报搜集的可能是一局(Authenticator),由于验证身份不仅仅是查姓名,年龄,籍贯这么简单,它需要查很多个方面(Realm),所以这事就被指派给了特务头子谭文强(AuthenticationStrategy)全权负责。最终谭文强手下负责各个方面调查的特务们没有一个查出阎宝航的问题,也就是说阎宝航的身份验证通过了,于是谭文强就将阎宝航通过的信息,以及其身份信息逐级向上传递,最终,蒋介石就会得到一个阎宝航验证通过,及其身份信息的绝密文件。如果验证不通过的话,一般就是通过红色电话一层一层向上传递(对应着代码中的异常)。

最后我们来聊一聊Shiro 的 Hello World该怎么弄。

首先要导入shiro的jar包,一般是四个,分别是shiro-all-1.3.2.jar、log4j-1.2.15.jar、slf4j-api-1.6.1.jar、slf4j-log4j12-1.6.1.jar。然后进入官方提供的shiro-root里面,将其中的sample\quickstart\src\main下的java文件夹中的Quickstart.java和resource文件夹下的log4j和shiro.ini文件放入工程中相应的位置,最后打开Quickstart.java,运行里面的main方法,控制台不报错的话,就算运行成功了。如果有问题,可以点击参考资料的视频地址查看,查询,解决。

清单

  1. Shiro中比较重要的是Realm,它是验证的最终执行者。
  2. 验证过程中的Authenticator是可以自己实现的。

参考资料

尚硅谷的《shiro.pdf》

视频地址:http://www.gulixueyuan.com/course/45

原文发布于微信公众号 - 怀英的自我修炼(hydzwxl)

原文发表时间:2018-03-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hongten

python开发_常用的python模块及安装方法

adodb:我们领导推荐的数据库连接组件 bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherry...

3333
来自专栏漏斗社区

黑客游戏| Owasp juice shop (一)

0x01 前言 最近看到一篇关于owasp juice shop的文章,觉的很有意思,斗哥就自己撸了个环境,上手后深深觉的这是一个很棒的漏洞靶场,所以就把该...

4698
来自专栏Crossin的编程教室

Python 爬虫爬取美剧网站

一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间。之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前...

3927
来自专栏视频咖

如何写出一手好的小程序代码,从架构说起

? 作为微信小程序底层 API 维护者之一,经历了风风雨雨、各种各样的吐槽。为了让大家能更好的写一手小程序,特地梳理一篇文章介绍。如果有什么吐槽的地方,欢迎去...

4272
来自专栏landv

金蝶KIS&K3助记码SQL数据库批量刷新

1083
来自专栏恰同学骚年

ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘

开篇:经历了上一篇《aspx与服务器控件探秘》后,我们了解了aspx和服务器控件背后的故事。这篇我们开始走进WebForm状态保持的一大法宝—ViewState...

1563
来自专栏Aloys的开发之路

Python第三方常用工具、库、框架等

       Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换、打印和显...

40410
来自专栏张高兴的博客

张高兴的 Windows 10 IoT 开发笔记:使用 ADS1115 读取模拟信号

3976
来自专栏HaHack

Speed Up the Rendering Process of hexo 3

1093
来自专栏木子昭的博客

往"某度文库"上传资源之前,请先做好这些...想到一句好玩的话:知道是你干的,只是懒得抓你!如果你喜欢python,喜欢故事,请点赞或关注我!您的支持是对作者最大的鼓励!

先讲个相关的故事:匿名黑客的"复仇行动" 2010年12月10日,黑客组织匿名者发布了一条消息,解释了他们发起最近一次代号为”复仇行动”的攻击的大致动机(Pr...

37413

扫码关注云+社区