博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shiro缓存
阅读量:7157 次
发布时间:2019-06-29

本文共 1957 字,大约阅读时间需要 6 分钟。

    shiro的可以权限控制内容包括:URL地址、Web页面的元素、以及方法,即shiro对用户权限的控制是细粒度的。从用户的一次访问来说,他可能需要最多经过三种、多次的验证。这里的多次怎么说呢?如果说Web页面的有10个元素加了Shiro标签,则一个页面的加载就需要10次验证。一句话:Shiro验证用户权限的频率很高,即访问数据库取得用户权限信息的频率很高。同时,用户的权限信息,是基本稳定的。很明显,这样的情景需要——缓存。

shiro对缓存的支持

    shiro并没有实现缓存的功能,shiro的缓存支持只是一个抽象的API。这个抽象是基于从多缓存机制的产品之上的。换句话说,shiro可以“坐拥三千妃子”啊。下面是《Apache Shiro 1.2.x 用户指南》 中文翻译中的内容:

    Shiro 有三个重要的缓存接口:

  • CacheManager - 负责所有缓存的主要管理组件,它返回 Cache 实例。
  • Cache - 维护key/value 对。
  • CacheManagerAware - 通过想要接收和使用 CacheManager 实例的组件来实现。

    CacheManager 返回Cache 实例,各种不同的Shiro 组件使用这些Cache 实例来缓存必要的数据。任何实现了 CacheManagerAware 的 Shiro 组件将会自动地接收一个配置好的 CacheManager,该 CacheManager 能够用来获取 Cache 实例。

缓存的配置(spring mvc)

    shiro的缓存配置非常简单,如下:

  • 在application-shiro.xml(shiro的配置文件):      

 

 

  • 缓存属性配置文件:
maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" />

 

shiro使用缓存遇到的问题

      shiro使用缓存极大的提高了程序的反应速度,但是对于新手来说,很容易碰到两个问题。

      第一个:
            现象:退出登录后,再次访问程序无需重新登录。
            原因:退出登录时,没有清理缓存。
      第二个:
            现象:改变用户权限时,不能及时反映出来,需要重新登陆才可以。
            原因:改变用户权限是,缓存中的数据还是原来的权限信息。
      对于第一个问题:上网查的一些资料,大部分建议改造一下realm的自定义实现,重写一下退出的缓存处理方法。对于新手来说,这可能不太好理解。那么这里推荐一种简单的方式:过滤退出地址,交给shiro的logout过滤器处理。logout会调用subject.logout()方法,清理掉shiro的缓存。只要简单的在过滤器链中加入对退出地址的过滤就好了,配置如下:

/message.jsp=anon
/logout=logout /shiro-cas=casFilter /** =user

 

      对于第二个问题,也就说如何解决缓存同步。目前我自己还没有好的解决方案,有知道的麻烦,教教我。这里,我只能是粗暴的选择,不使用缓存。网上有解决方案,我还需要研究研究。

集群缓存

    这次的项目,实际上我需要用到的是集群缓存。所以对于上面的第二个问题,还没有去深入。但是,集群缓存这块也还没有弄懂。所以,下篇再介绍了。

转载地址:http://xpegl.baihongyu.com/

你可能感兴趣的文章
Android虹软人脸识别sdk使用工具类
查看>>
springmvc 基于注解的controller
查看>>
Windows Phone本地数据库的使用框架和技巧
查看>>
nmap教程之nmap命令使用示例
查看>>
你不需要jQuery(二)
查看>>
linux用户和权限管理
查看>>
关于Linux系统的平均负载最全面介绍
查看>>
卸载一个程序
查看>>
Python-函数进阶
查看>>
mysql集群与存储
查看>>
Purism推出PureBoot以更好地保护Linux计算机
查看>>
pxe自动化部署
查看>>
逻辑卷硬盘搬家
查看>>
交互设计软件Framer X for mac软件测评
查看>>
零基础Python学习路线,小白的进阶之路!
查看>>
暴雪MPQ中的hash算法(转载原英文博客)
查看>>
shell脚本之awk学习笔记
查看>>
mysql5.6初级使用方法学习第一天
查看>>
七、自定义函数 变量的引用传值
查看>>
windows服务器无法远程连接问题分析
查看>>