diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java index 33435e1d..c3657d1d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/UserDetailsServiceImpl.java @@ -27,6 +27,8 @@ import me.zhengjie.modules.system.service.dto.UserDto; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; + +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -41,6 +43,7 @@ public class UserDetailsServiceImpl implements UserDetailsService { private final RoleService roleService; private final DataService dataService; private final LoginProperties loginProperties; + public void setEnableCache(boolean enableCache) { this.loginProperties.setCacheEnable(enableCache); } @@ -58,6 +61,10 @@ public class UserDetailsServiceImpl implements UserDetailsService { JwtUserDto jwtUserDto = null; if (loginProperties.isCacheEnable() && userDtoCache.containsKey(username)) { jwtUserDto = userDtoCache.get(username); + // 检查dataScope是否修改 + List dataScopes = jwtUserDto.getDataScopes(); + dataScopes.clear(); + dataScopes.addAll(dataService.getDeptIds(jwtUserDto.getUser())); searchDb = false; } if (searchDb) { diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java index 657a6074..75754f3b 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java @@ -113,6 +113,8 @@ public class DeptServiceImpl implements DeptService { resources.setSubCount(0); // 清理缓存 updateSubCnt(resources.getPid()); + // 清理自定义角色权限的datascope缓存 + delCaches(resources.getPid()); } @Override