5.15 shiro缓存
针对上边授权频繁查询数据库,需要使用shiro缓存。
5.15.1 缓存流程
shiro中提供了对认证信息和授权信息的缓存。shiro默认是关闭认证信息缓存的,对于授权信息的缓存shiro默认开启的。主要研究授权信息缓存,因为授权的数据量大。
用户认证通过。
该 用户第一次授权:调用realm查询数据库
该 用户第二次授权:不调用realm查询数据库,直接从缓存中取出授权信息(权限标识符)。
5.15.2 使用ehcache
5.15.2.1 添加Ehcache的jar包

5.15.2.2 配置cacheManager


5.15.2.3 shiro-ehcache.xml

5.15.2.4 缓存清空
如果用户正常退出,缓存自动清空。
如果用户非正常退出,缓存自动清空。
如果修改了用户的权限,而用户不退出系统,修改的权限无法立即生效。
需要手动进行编程实现:
在权限修改后调用realm的clearCache方法清除缓存。
下边的代码正常开发时要放在service中调用。
在service中,权限修改后调用realm的方法。
在realm中定义clearCached方法:
//清除缓存
public void clearCached() {
PrincipalCollection principals = SecurityUtils.getSubject().getPrincipals();
super.clearCache(principals);
}
测试清除缓存controller方法:

5.16 sessionManager
和shiro整合后,使用shiro的session管理,shiro提供sessionDao操作 会话数据。
配置sessionManager


本文介绍如何在Shiro框架中使用缓存提高授权信息的查询效率,并探讨了使用Ehcache的具体步骤及缓存的清空机制。此外,还讲解了Shiro的Session管理机制及其配置。
——缓存cache+会话session&spm=1001.2101.3001.5002&articleId=81557333&d=1&t=3&u=31f9ecdeb9d4469fa6de3a2aa27df549)
336

被折叠的 条评论
为什么被折叠?



