shiro
文章平均质量分 76
快乐的小三菊
这个作者很懒,什么都没留下…
展开
-
springboot + shiro 自定义 Realm 的 doGetAuthenticationInfo() 方法的 SimpleAuthenticationInfo() 参数
背景: 在我们实现的自定义 Realm 的doGetAuthenticationInfo() 方法中,关于返回值SimpleAuthenticationInfo 的第一个参数,可以传 userName ,也可以传 User 对象,到底该使用哪个呢?我们来分析一下。扩展:shiro:cache:authenticationCache:zhangsan 它是身份认证的缓存,是CustomRealm 中的doGetAuthenticationInfo() 方法执行之...原创 2021-06-16 16:02:40 · 1762 阅读 · 0 评论 -
springboot + shiro 整合 redis 实现登出时清除不干净的缓存
背景: 在实现登出操作的时候,我们发现 redis 中的当前用户的身份认证缓存并没有清理掉,虽然我们在登出的方法中已经调用了清理当前用户的身份认证和权限认证的缓存信息,但是最终的结论是权限认证的缓存清理干净了,但是身份认证的缓存并没有清理掉。原因: 为什么这个 key 没有清除掉呢?经过调试发现,在清理身份认证缓存的时候,调用了 CustomRealm 的clearCachedAuthenticationInfo() 方法,最终调用到的是我们的 RedisCache 中...原创 2021-06-16 11:33:19 · 1750 阅读 · 0 评论 -
springboot + shiro 实现自己的登出
背景: 如果想要实现登出功能,常见的实现方式就是在ShiroConfig 类的shiroFilterFactoryBean() 方法中配置一个标签,这种方式是 shiro 自带的登出方式,只要拦截到访问 /logout 的请求,就会被 logout 对应的 LogoutFilter 拦截,自动登出。配置如下所示: @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securi...原创 2021-06-11 17:00:54 · 1090 阅读 · 0 评论 -
springboot + shiro 整合 redis 解决频繁访问 redis 和更新 session
关于频繁访问 redis ,一共分为两种情况,第一种是频繁的去 redis 中 读取 session ;另外一种是频繁的去更新 redis 中的 session ,针对这两种情况,分别写出相应的解决方案。原创 2021-06-08 17:42:57 · 2705 阅读 · 2 评论 -
springboot + shiro 整合 redis 缓存用户并发登录限制和用户登录错误次数
springboot + shiro + redis原创 2021-06-08 16:21:26 · 2921 阅读 · 1 评论 -
springboot + shiro 整合 redis 缓存 Authentication 、Authorization 和 session
背景: 由于之间整合过 encache ,现在改成使用 redis 作为缓存,之前实现的限制登录人数和限制登录次数的功能都需要改动。如果是单机使用,使用 encache 是最快的,但是项目一般都不是单节点,为了方便以后使用 sso 单点登录以及多节点部署,所以使用 shiro 整合 redis 还是很有必要的。添加 maven 依赖: 需要先注释掉以前引入的 ecache 依赖,然后引入 redis 的依赖,我的 shiro 版本是 1.6.0 的,这块引入的 redis...原创 2021-06-04 15:49:30 · 1338 阅读 · 1 评论 -
shiro 整合 redis 缓存出现 xxx cannot be cast to xxx
背景: 在使用 shiro 整合 redis 做缓存的时候,明明是一样的两个类,就是被不能够相互转换,出现问题的代码位置如下所示: @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { // 获取登录用户,就是这个地方出现的类型转换错误 User sysuser = (User)principalCollection....原创 2021-06-04 11:19:39 · 1301 阅读 · 0 评论 -
springboot + shiro 实现验证码
背景: 验证码是有效防止暴力破解的一种手段,常用做法是在服务端产生一串随机字符串与当前用户会话关联(我们通常说的放入 Session),然后向终端用户展现一张经过“扰乱”的图片,只有当用户输入的内容与服务端产生的内容相同时才允许进行下一步操作。 与其说在 shiro 中添加验证码,不如说是在 web 服务登录中添加验证码功能,因为这个功能和 shiro 完全没有任何关系,网上大都是实现 FormAuthenticationFilter 然后在 filter 中进行验证码校验,...原创 2021-06-02 16:34:07 · 999 阅读 · 1 评论 -
springboot + shiro 实现限制用户登录次数
背景: shiro 可以实现限制用户登录尝试次数的功能,要限制用户登录尝试次数,必然要对用户名密码验证失败做记录,当登录失败次数达到限制,修改数据库中的状态字段,并返回前台错误信息。创建比较器: 创建比较器类 RetryLimitHashedCredentialsMatcher 它继承了 HashedCredentialsMatcher,在这里面实现判断登录失败次数的记录,代码如下所示:import java.util.concurrent.atomic.Atomi...原创 2021-06-02 15:25:35 · 2274 阅读 · 2 评论 -
springboot + shiro 实现登录人数控制
背景: shiro 可以实现控制系统内用户登录人数的功能,比如用户 A 在天津登录,同一时刻用户 B 在北京登录,若要保证某一时刻只能有一个人登录的话,就需要踢掉用户 A,因为它是第一次登录的,若此时用户 A 再次登录,则会踢掉用户 B,如此反复。即可实现某一时刻系统只有一个人登录。 实现起来很简单,只需要自定义实现 shiro 的 filter 即可,下面我们来看下具体是如何实现的。新增拦截器: 首先,我们新建一个拦截器类KickoutSessionC...原创 2021-06-01 10:36:35 · 1204 阅读 · 1 评论 -
springboot shiro session过期跳转到登录页
背景: 想实现一个 session 过期,然后系统自动校验,然后跳转到登录页的功能,研究了好几天,终于研究出来了。编写拦截器: 需要编写一个拦截器SystemFilter 来拦截用户的 ajax 请求,若当前的 session 处于超时状态,则给他设置session-status 为timeout ,然后在 js 文件里面做一个校验即可。public class SystemFilter implements Filter{ @Override publ...原创 2021-05-31 16:16:32 · 2819 阅读 · 8 评论 -
springboot + shiro 配置session管理
提供了完整的企业级会话管理功能,不用依赖于底层容器(如等),不管是还是环境都可以使用,还提供了。即直接使用的会话管理可以直接替换如容器的会话管理。原创 2021-05-27 11:33:21 · 5773 阅读 · 4 评论 -
springboot + shiro 配置 ehcache 缓存
账号登录,第一次访问,查看控制台,有日志输出,如下所示,下面只截取了一部分的日志输出,再次访问将不再打印输出,证明缓存生效了。1、用两个浏览器分别用不同的用户登录到系统中,然后刷新界面,我们发现,无论怎么刷新,都不用有日志输出,因为此时查询的时缓存。方法,然后再刷新界面,我们发现此时后台有日志输出,即查询的数据是数据库里面的数据。方法,然后再刷新界面,我们发现此时后台有日志输出,即查询的数据是数据库里面的数据。中添加如下方法用于清除缓存,在添加或者删除权限的时候,都需要清除缓存。,并将缓存管理器添加到。原创 2021-05-26 15:42:46 · 2367 阅读 · 0 评论 -
shiro 未拦截项目内部方法调用
背景: 最近在看 shiro,在搭建工程的时候突然发现一个问题,由于我的过滤器配置的是map.put("/**", "authc"); 即对所有用户进行认证,当用户进行登录操作时,需要给用户的登录请求添加过滤,js 的请求才可以到达后台,如下所示,map.put("/login", "anon");map.put("/**", "authc"); 在登录成功之后,我的 js 里面的 ajax 再次请求后台的方法时,shiro 并没有拦截我的请求,而是将请求通过了,我...原创 2021-05-24 11:43:12 · 536 阅读 · 1 评论 -
springboot + shiro 实现记住我
第一次登录的时候,需要用户自己输入用户名和密码,选中记住的标签。登录成功之后,此时关掉浏览器,再打开浏览器,再次输入刚才的网址,即可发现这次登录不需要再输入用户名和密码,即可直接进入验证通过的界面。达到的最终效果就是第一次使用账号和密码登录(登录成功),此时退出浏览器,然后重新打开网页登录界面,就会自动登录到登录成功的网页上。我们平常在登录网站的时候,经常会发现网页上有个。是如何实现,说白了就是携带参数,将请求发送到。此时,启动工程,输入网址。类是如何实现,需要注意的是。,看下浏览器帮我们保存的。原创 2021-05-21 11:08:09 · 1819 阅读 · 1 评论 -
springboot + shiro 地址栏出现 jsessionid
解决 springboot + shiro 地址栏出现 jsessionid原创 2021-05-21 09:41:15 · 1621 阅读 · 0 评论 -
shiro过滤器
一、背景 主要讲一下在 ShiroConfig 的 shiroFilterFactoryBean() 的方法中的一些过滤条件配置和注意事项,shiro 支持自定义过滤器,我们下面会讲,先看下原生支持的一些标签。二、配置 配置主要分为两类,第一类设置一些界面跳转的地址,第二类是设置一些过滤器的配置。// Filter工厂,设置对应的过滤条件和跳转条件 @Bean public ShiroFilterFactoryBean shiroFilterFactoryBe...原创 2021-05-20 17:10:02 · 463 阅读 · 0 评论 -
shiro 整合 springmvc 配置静态资源过滤
shiro 整合 springmvc 配置静态资源过滤原创 2021-05-20 16:23:24 · 903 阅读 · 1 评论 -
shiro 盐值加密
shiro 盐值加密原创 2021-05-17 09:47:10 · 992 阅读 · 1 评论 -
shiro 授权
shiro 授权源码探究原创 2021-05-14 17:21:01 · 1929 阅读 · 2 评论 -
shiro 认证
shiro 认证源码探究原创 2021-05-12 11:17:52 · 2333 阅读 · 0 评论 -
springBoot 集成 shiro
springBoot 集成 shiro 并实现认证授权和加密原创 2021-05-11 17:46:08 · 336 阅读 · 1 评论 -
shiro 简介
shiro 简介原创 2021-04-29 11:06:48 · 2650 阅读 · 1 评论