使用缓存,可以解决每次访问请求都查数据库的问题。第一次授权后存入缓存。

缓存流程

shiro中提供了对认证信息和授权信息的缓存。shiro默认是关闭认证信息缓存的,对于授权信息的缓存shiro默认开启的。主要研究授权信息缓存,因为授权的数据量大。

用户认证通过。

该 用户第一次授权:调用realm查询数据库

该 用户第二次授权:不调用realm查询数据库,直接从缓存中取出授权信息(权限标识符)。

-------------------------------------使用ehcache缓存框架------------------------------

添加Jar包:

配置cacheManager

注入securityManager

classpath下配置shiro-ehcache.xml

到这里就可以使用缓存了,用户登进去一次之后访问系统不会每次都查询数据库查询权限

------------------------------------------------缓存清-空--------------------------

如果用户正常退出,缓存自动清空。

如果用户非正常退出,缓存自动清空。

如果修改了用户的权限,而用户不退出系统,修改的权限无法立即生效。

需要手动进行编程实现:

在权限修改后调用realm的clearCache方法清除缓存。

正常开发时要放在service中调用。

在service中,权限修改后调用realm的清空缓存方法。

在realm中定义clearCached方法:

// 清除缓存public void clearCached() {PrincipalCollection principals = SecurityUtils.getSubject().getPrincipals();super.clearCache(principals);}

测试清除缓存controller方法:

转载于:https://www.cnblogs.com/qlqwjy/p/7257653.html

Shiro缓存(十三)相关推荐

  1. SpringBoot + Shiro 缓存记住密码

    一般来讲,记住密码的基本处理,就是把用户的一些基本信息(密码)存入浏览器的Cookie,下次登录的时候优先验证Cookie,后端做处理:以此来实现记住密码的功能!使用shiro自带的RememberM ...

  2. shiro缓存管理时报错java.lang.ClassCastException: com.xxx.User cannot be cast to com.xxx.User

    一.异常 java.lang.ClassCastException: com.px.myshiro.domain.User cannot be cast to com.px.myshiro.domai ...

  3. Shiro缓存使用Redis、Ehcache、自带的MpCache实现的三种方式实例

    链接:https://www.cnblogs.com/zfding/p/8536480.html 转载于:https://www.cnblogs.com/116970u/p/11169192.html

  4. Shiro框架:缓存、session会话、自定义FormAuthenticationFilter、RemenberMe

    上篇的地址:https://blog.csdn.net/a745233700/article/details/81350191 一.Shiro缓存--cacheManager: 针对上一篇授权的时候频 ...

  5. Shiro使用redis作为缓存(解决shiro频繁访问Redis)

    一个开源项目,实现了redis作为缓存 缓存用户的权限 和 session信息,还有两个功能没有修改,一个是用户并发登录限制,一个是用户密码错误次数.本篇中几个类 也是使用的开源项目中的类,只不过是拿 ...

  6. 学习Spring Boot:(十九)Shiro 中使用缓存

    前言 在 shiro 中每次去拦截请求进行权限认证的时候,都会去数据库查询该用户的所有权限信息, 这个时候就是有一个问题了,因为用户的权限信息在短时间内是不可变的,每次查询出来的数据其实都是重复数据, ...

  7. Shiro教程_2 Shiro+SpringBoot+Mysql+Redis(缓存)

    源代码 https://gitee.com/fakerlove/Shiro Shiro+SpringBoot+Mysql+Redis(缓存) 1. 添加依赖 <?xml version=&quo ...

  8. Shiro框架学习笔记、整合Springboot、redis缓存

    本笔记基于B站UP主不良人编程 目录 1.权限的管理 1.1什么是权限管理 1.2什么是身份认证 1.3什么是授权 2.什么是Shiro 3.Shiro的核心架构 3.1 S核心内容 4.shiro中 ...

  9. 使用Redis缓存Shiro授权认证信息,搭建集群权限系统

    应用如果做负载均衡,集群间session需要共享,如果session没有共享,用户登录系统以后session保存在登录的应用里面,其他应用里面没有session,没有登陆状态,访问会失败.下面介绍一个 ...

最新文章

  1. [Java基础]IO流概述和分类
  2. [codevs1039]数的划分
  3. vc中如何将一个工程的资源复制到另外一个工程?
  4. 连接路由器后电脑连不上网_电信光纤猫与无线路由器连接怎么设置【图文教程】...
  5. 当数据处理做不到实时,应该怎么办?
  6. ajax传递timestamp,解决ajax请求自动增加时间戳问题
  7. android ExpandableListView
  8. BatchPreparedStatementSetter,用法
  9. VC++多线程--进程间通信
  10. pjproject编译方法与相关错误解决
  11. 利用Eclipse的TaskList功能进行任务管理
  12. 机器人技术创新与实践旧版本大纲
  13. 芯烨 Xprinter XP-DT108A 打印机驱动
  14. 在Word2019中不能插入公式的解决办法
  15. php的入门是html5,h5自学教程:6个适合初学者的零基础html5入门自学教程推荐
  16. Mysql-错误处理: Found option without preceding group in config file
  17. MotionEvent 事件解读
  18. 计算机英语中poke什么意思,poke one是什么意思
  19. 球半足球分析,巴西甲:布拉干RB VS 博塔弗戈 7月5日
  20. DataFrame创建数据

热门文章

  1. 遗传算法(Genetic Algorithm)
  2. kasp技术原理_KASP基因型测定技术在各个学科的应用实践(内附官方重要资料)...
  3. vue修改config后怎么生效_梦幻西游 金银锦盒修改后资金怎么攥 可以考虑跑商
  4. gitblit无法启动服务
  5. Linux移植随笔:让内核支持nor flash
  6. tomcat启动 报tomcat org.apache.catalina.LifecycleException
  7. 【Flink】Flink 源码之OperatorChain
  8. 【FLink】Flink 1.9 升级到 1.12.4 无配置页面 无日志
  9. 【Elasticsearch】 海量 分词器 在线地址 与文档
  10. 95-30-050-java.util.ArrayList:Vector