spring mvc+Mybatis整合shiro 第六章 关于更新缓存权限的几个要点
来源:互联网 发布:西门子840d编程手册书 编辑:程序博客网 时间:2024/06/02 02:14
public void refreshAuth() { try { Ini ini = new Ini(); ini.load("/static/**=anon"); Section section = ini.getSection(Ini.DEFAULT_SECTION_NAME); section.put("/js/**", "anon"); section.put("/css/**", "anon"); section.put("/images/**", "anon"); section.put("/lib/**", "anon"); Map<String, Object> filterMap = new HashMap<String, Object>(); filterMap.put("resourceStatus", SysResourceEnum.status.START.key); //查询菜单与资源绑定视图 menuResourceViewManager.getLoadSection(section); AbstractShiroFilter shiroFilter = (AbstractShiroFilter) shiroFileterFactoryBean.getObject(); PathMatchingFilterChainResolver filterChainResolver = (PathMatchingFilterChainResolver) shiroFilter.getFilterChainResolver(); DefaultFilterChainManager manager = (DefaultFilterChainManager) filterChainResolver.getFilterChainManager(); manager.getFilterChains().clear(); shiroFileterFactoryBean.getFilterChainDefinitionMap().clear(); shiroFileterFactoryBean.setFilterChainDefinitionMap(section); // 重新构建生成 Map<String, String> chains = shiroFileterFactoryBean.getFilterChainDefinitionMap(); for (Map.Entry<String, String> entry : chains.entrySet()) { String url = entry.getKey(); String chainDefinition = entry.getValue().trim().replace(" ", ""); manager.createChain(url, chainDefinition); } logger.info("**************权限控制加载完毕**************"); } catch (SelectException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
上面这段代码是修改系统权限之后重新刷新权限的操作,Shiro的用户权限是保存在缓存中的所以在集群中当用户权限更新时我们只需要删除对应的缓存就好了,但系统权限缓存不一样。
Shiro的系统缓存是被加载到一个HashMap里也就是ShiroFilterFactoryBean.filters这个变量,当我们调用上面那段代码去重新加载系统权限的时候也只能重新加载当前请求服务器的系统权限并不能影响到集群中其它服务器所缓存的系统权限,这块应该算是shiro的一个bug问题,这块的问题可以使用Redis的消息订阅、JGroup组播等方式或解决集群问题。
阅读全文
0 0
- spring mvc+Mybatis整合shiro 第六章 关于更新缓存权限的几个要点
- spring mvc+Mybatis整合shiro 第五章 缓存
- Spring mvc + MyBatis 整合Shiro
- shiro +spring + spring mvc+ mybatis整合
- shiro +spring + spring mvc+ mybatis整合
- spring mvc+Mybatis整合shiro 第二章Realm
- spring mvc+Mybatis整合shiro 第三章 SessionManager
- spring mvc+Mybatis整合shiro 第四章 SessionDAO
- spring mvc整合shiro登录 权限验证
- 权限管理之Shiro+Spring MVC整合
- spring mvc整合shiro登录 权限验证
- spring mvc整合shiro登录 权限验证
- spring mvc整合shiro登录 权限验证
- Shiro+Spring MVC整合
- Shiro+Spring MVC整合
- Spring+Shiro权限整合
- shiro框架的权限控制(Spring整合)
- spring mvc+Mybatis整合shiro 第一章 整体配置
- nodejs之EventEmitter
- 前端兼容性问题总结--1
- web语义化的理解
- 批次管理相关事务代码
- 【java学习笔记】接口VS抽象类
- spring mvc+Mybatis整合shiro 第六章 关于更新缓存权限的几个要点
- fstream ,ifstream,ofstream的用法详解
- MAC系统如何显示隐藏文件
- 华丽的分割线
- 一个随机排布的面试题(洗牌算法?)
- Java反射的理解
- LVS实现负载均衡
- 自定义Linearlayout
- scala 关键字seal