
跟着大宇学Shiro
文章平均质量分 96
Apache Shiro是Java的一个安全框架。对于OA系统、审批系统等经常需要大量的使用权限控制的系统,Shiro安全框架可以更好的辅助开发人员解决实际工作中遇到的安全问题,因此Shiro框架的重要性不言而喻。本系列Shiro博客旨在帮助你快速上手Shiro。
小大宇
能与优秀的人为伍自然就会变优秀
展开
-
跟着大宇学Shiro--------目录帖
一、我与Shiro 本系列Shiro已经重写,本次重写时间为2018年12月。博主已经在实际项目中接触快Shiro一年,也积累了不少使用心得。文章已经部分转移到了我的专栏里面:跟着大宇学Shiro博客专栏。 本系列教程源码:点击我下载源码 下面是本次重写的博客大纲,希望大宇能够帮助到正在学习shiro的你。我期待与大家一起交流学习、共同进步。...原创 2020-07-01 17:43:10 · 11162 阅读 · 10 评论 -
第十六节 Shiro限制密码重试次数限制
一、基本思路 不管是单机还是集群,我们都得把用户的登录次数记录下来,放到缓存里面。 单机使用的是Ehcache缓存,集群使用的是Redis缓存。单机或集群对于缓存来说,只是CacheManager接口的实现方式不同。 我们可以按照如下的思路来限制登录次数: 先查看是否系统中是否已有登录次数缓存。缓存对象结构预期为:"用户名-...原创 2022-02-22 19:17:36 · 4978 阅读 · 4 评论 -
第十五节 Shiro集成Redis实现分布式集群Cache共享
一、原理 Shiro使用的是Token来封装用户登录的信息,另外一边,从数据库中查询出来的数据存放在"AuthenticationInfo"中,然后将token与info进行对比,对比一致的话说明用户登录成功。在登录成功后,为了缓解数据库的压力,可以将用户登录成功的info信息缓存下来。一般使用的是一组键值对来封装数据。因此,缓存的键值对可以理解为 "用户主凭...原创 2019-01-16 16:51:03 · 1610 阅读 · 0 评论 -
第十四节 Shiro缓存机制
一、缓存 缓存的工作机制是:先从缓存中读取数据,如果没有再从数据库读取实际数据,并把读取的数据存入缓存,下次再访问相同资源的时候,直接从缓存中获取,这样就可以缓解一些数据库的压力。 缓存有两个比较常用的概念:TTL(Time To Live) 存活期,即从缓存中创建时间点开始直到它到期的一个时间段(不管在这个时间段内有没有访问都...原创 2019-01-16 13:30:30 · 1377 阅读 · 0 评论 -
第十三节 Shiro集成Redis实现分布式集群Session共享
一、使用Redis共享Session原理所有服务器的session信息都存储到了同一个Redis集群中,即所有的服务都将 Session 的信息存储到 Redis 集群中,无论是对 Session 的注销、更新都会同步到集群中,达到了 Session 共享的目的。 Cookie 保存在客户端浏览器中,而 Session 保存在服务器上。客户端浏览器访问服务器的...原创 2020-04-15 08:57:51 · 8175 阅读 · 8 评论 -
第十二节 Shiro会话管理
一、Shiro Session 的基本功能 在Shiro里面可以发现所有的用户的会话信息都会由Shiro来进行控制,那么也就是说只要是与用户有关的一切的处理信息操作都可以通过Shiro取得,实际上Shiro的会话能够获取到HttpSession中存储的值,这所有的信息都可以通过Subject接口取得。 在Controller层,我们建议大家使用原生的HttpSe...原创 2019-01-15 18:43:54 · 1229 阅读 · 1 评论 -
第十一节 Remember Me
一、Remember Me能解决什么问题 (1)当用户没有退出且关闭了浏览器,再次打开网站则不需要再次登录。 (2)当用户在登陆时勾选"记住我",退出登录后,下次登录的时候,登录表单会记住上次的登录名。 我已经搭建好的Shiro集成SSM框架,并且已经集成了RememberMe功能,如果你愿意下载我的源码的话,我很乐意与你一起探讨Shiro的...原创 2019-01-11 18:02:20 · 1270 阅读 · 0 评论 -
第十节 Shiro集成SSM框架
一、搭建基本的SSM框架 首先告诉大家一个好消息,现在github的私有仓库免费咯。 好,开始本小节的教学。首先需要搭建一个SSM框架。如何搭建SSM框架,不在本文的讨论范围之内。你可以下载我的已经搭建好的基本的SSM框架,地址:点击我下载源码。我提供了一个基本的SSM框架与集成Shiro后的SSM框架。如果你时间比较急,你可以直接查看搭建后的代码并进入第三步中直接...原创 2022-02-22 19:16:51 · 2149 阅读 · 5 评论 -
第九节 Shiro标签原理分析
一、shiro的标签 首先,你需要知道的是,标签的实质其实是Java代码。你已经知道,JSP实质也是Java代码,更别说用在JSP中的标签了。 稍后你会在源码追踪环节了解到:Shiro标签执行了哪些Java代码。 标签的作用就是移除JSP页面中的Java代码。 OK,下面进入正题:Shiro标签。 最常见的Shiro标签有三个...原创 2018-01-31 17:45:50 · 1568 阅读 · 2 评论 -
第八节 与WEB集成实例分析
前言 与WEB集成想了一下,还是要弄一个例子。至少应该展示一下拦截器的基本用法。如果你有幸看到这里,希望你能继续跟着大宇的思路走下去。我将想你展示我编写代码的流程。与Spring集成先不要着急,我会在后面的小节详细向你讲述。现在,让我们先来搞定一个简单的Shiro与WEB集成的例子。本小节的流程是:导入依赖、设置web.xml、编写java、配置shiro.ini、最后编写JSP...原创 2018-01-30 22:17:52 · 1484 阅读 · 7 评论 -
第七节 shiro自带的拦截器分析
一、Shiro框架携带的拦截器 首先来温故一下最常见的shiro拦截器。anon表示不拦截,authc表示需要认证,roles表示需要某种角色,perms就更狠了,直接表明需要某种权限。ssl是https相关的拦截器,上次项目中客户要求以https方式启动项目,当时是项目经理配置的,我暂时还没有掌握这种拦截器。anon:匿名拦截器,即不需要登录即可访问;一般用于静态资源过滤...原创 2018-01-30 13:29:16 · 3764 阅读 · 2 评论 -
第六节 与WEB集成原理分析
前言 本小节仅仅是分析shiro的WEB环境加载的过程。有时候我们在使用框架或者集成其它插件的时候,可能会遇到各种各样启动的问题,这个时候能够去追踪源码,找到问题所在,也是我们开发人员的必备技能之一。一、与WEB集成的配置 还记得吗,以前我们在没有与WEB环境进行集成的时候,为了生成SecurityManager对象,是通过手动读取配置文件生成工厂对象,再通...原创 2018-01-29 14:32:47 · 1446 阅读 · 0 评论 -
第五节 授权过程源代码追踪
一、授权流程 在上一小节中,我们通过门面对象Subject.hasRole(String role) 、 Subject.checkPermissions(String permission)等接口,来判断用户是否拥有指定的角色信息或权限信息。那么,在Shiro内部,究竟做了哪些操作呢?本小节,我们通过追踪源码的方式,来查看一些Shiro授权部分的技术内幕。 首...原创 2018-01-29 10:56:48 · 1512 阅读 · 1 评论 -
第四节 Shiro权限管理
一、授权的理解 你是谁,你是谁决定了你的身份是什么,你的身份决定了你能干什么。 这里牵扯出三种对象。 用户对象user:当前操作的用户。 角色对象role :表示一组 "权限操作许可权" 的集合。 权限对象permission:资源操作许可权。 例如,大宇(user)需要下载(permiss...原创 2018-01-29 10:44:11 · 2241 阅读 · 8 评论 -
第三节 Shiro对加密的支持
一、用代码谈加密 相信你已经知道,在实际项目中,用户的密码在数据库中一定是密文。比如你的CSDN帐号的密码是123456,但是在CSDN的数据库表中,可能存放的就是类似"e389b243168cd658ccae899240bf8321"这样的一段密文。 为了快速上手,我们需要知道一些加密的算法。常见的加密算法有MD5。该如何使用呢?Shiro提供了一套加密API...原创 2022-02-22 19:44:19 · 2404 阅读 · 2 评论 -
第二节 自定义Realm之继承AuthorizingRealm
一、Realm基本架构 为了快速上手,我们需要知道的是,Shiro将数据库中的数据,存放到Realm这种对象中。而Shiro提供的Realm体系较为复杂,一般我们为了使用Shiro的基本目的就是:认证、授权。 所以,一般在真实的项目中,我们不会直接实现Realm接口,也不会直接继承最底层的功能贼复杂的IniRealm。我们一般的情况就是直接继......原创 2020-05-06 15:32:07 · 13798 阅读 · 19 评论 -
第一节 身份认证的基本流程
前言 先感谢涛哥写了这么好的文章,附上原文学习地址:涛哥的shiro教程 学习完孤傲苍狼和涛哥的博客,觉得分享知识是一种进步,原因很简单:能把别人教会了的博客,一定是好博客。我始终相信,写博客的受益者之一永远都有自己。 因为自己水平有限,推荐看完涛哥的博客后,再来看看我写的总结,对于博主来说,就已经心满意足了。本系列已经默认你有一定的Shiro...原创 2020-05-11 15:42:34 · 8943 阅读 · 4 评论