请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

jeesite

 找回密码
 注册新会员
查看: 1568|回复: 3

【jeesite之BUG修复系列】一、角色缓存BUG

[复制链接]
来啊互相伤害啊 发表于 2016-12-24 22:27:54 | 显示全部楼层 |阅读模式
本帖最后由 来啊互相伤害啊 于 2016-12-24 22:39 编辑

【jeesite之BUG修复系列】一、角色缓存BUG
模拟场景一:超管修改角色 “部门管理员” 为仅能看到自己数据,但是用户“lx_admin”(属                        于该角色)登录后依旧拥有修改前的角色。
模拟场景二:修改某角色名称后,对应用户登录依旧看到原来角色名称,而非新名称。

问题:由于jeesite为了提高性能,使用了缓存机制,在或者当前用户的时候,优化从缓存中查询,如果缓存中存在,则直接读取缓存,包括该用户被缓存下来的角色,当管理员修改角色的时候,用户依旧使用旧的角色导致。
解决办法:
在SystemService.java
中的 saveRole 方法加入如下代码:

  1.                 List<User> userList = findUser(new User(new Role(role.getId())));
  2.                 for (User user : userList) {
  3.                         CacheUtils.remove(UserUtils.USER_CACHE, UserUtils.USER_CACHE_ID_ +user.getId());
  4.                 }
复制代码




                                                jeesite的完善离不开大家的共同努力
禅心
回复

使用道具 举报

 楼主| 来啊互相伤害啊 发表于 2016-12-24 22:30:51 | 显示全部楼层
本帖最后由 来啊互相伤害啊 于 2016-12-24 22:39 编辑

【jeesite之BUG修复系列】一、角色缓存BUG
模拟场景一:超管修改角色 “部门管理员” 为仅能看到自己数据,但是用户“lx_admin”(属                        于该角色)登录后依旧拥有修改前的角色。
模拟场景二:修改某角色名称后,对应用户登录依旧看到原来角色名称,而非新名称。

问题:由于jeesite为了提高性能,使用了缓存机制,在或者当前用户的时候,优化从缓存中查询,如果缓存中存在,则直接读取缓存,包括该用户被缓存下来的角色,当管理员修改角色的时候,用户依旧使用旧的角色导致。
解决办法:
在SystemService.java
中的 saveRole 方法加入如下代码:
  1.                 List<User> userList = findUser(new User(new Role(role.getId())));
  2.                 for (User user : userList) {
  3.                         CacheUtils.remove(UserUtils.USER_CACHE, UserUtils.USER_CACHE_ID_ +user.getId());
  4.                 }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册新会员

本版积分规则

QQ|手机版|小黑屋|Archiver|jeesite 官方论坛. ( 吉ICP备12004769号  

GMT+8, 2018-11-16 11:00 , Processed in 0.121093 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表