diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java index 18171743..4d69293f 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/TyrSaasAuthServiceImpl.java @@ -687,7 +687,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { @Override public IdentityAuthRes findIdentityAuthMix(IdentityAuthReq req) { List permissions = null; - if (req.isUseCache() || CollectionUtil.isNotEmpty(req.getSpecifyRoleIds())) { + if (!req.isUseCache() || CollectionUtil.isNotEmpty(req.getSpecifyRoleIds())) { //不走缓存 或者 角色预览 permissions = findIdentityPermission(req); } else { @@ -703,6 +703,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { || CollectionUtil.isNotEmpty(req.getFeatureCode()) || CollectionUtil.isNotEmpty(req.getFeatureId()); if (!needFilter) { + result.setPermissions(permissions); return result; } Set terminals = req.getTerminal() == null ? null : new HashSet<>(req.getTerminal()); @@ -728,7 +729,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { //从缓存取权限,并记录缓存中没有的OW List needQueryPairs = new ArrayList<>(); req.getWorkspaceOusPairs().forEach(ow -> { - String key = KeyUtil.buildKeyBySeparator("auth", req.getIdentityId(), req.getIdentityType(), ow.getOuId(), ow.getWorkspaceId()); + String key = KeyUtil.buildKeyBySeparator("auth", req.getIdentityId(), req.getIdentityType().getCode(), ow.getOuId(), ow.getWorkspaceId()); IdentityAuthRes.WorkspacePermission permission = getIdentityAuthFromCache(key); if (permission == null) { needQueryPairs.add(ow); @@ -744,7 +745,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { List authPermission = findIdentityPermission(req); permissions.addAll(authPermission); authPermission.forEach(p -> { - String key = KeyUtil.buildKeyBySeparator("auth", req.getIdentityId(), req.getIdentityType(), p.getOuId(), p.getWorkspaceId()); + String key = KeyUtil.buildKeyBySeparator("auth", req.getIdentityId(), req.getIdentityType().getCode(), p.getOuId(), p.getWorkspaceId()); cacheIdentityAuth(key, p); }); } @@ -754,7 +755,7 @@ public class TyrSaasAuthServiceImpl implements TyrSaasAuthService { private void cacheIdentityAuth(String key, IdentityAuthRes.WorkspacePermission permission) { RedisUtil.StringOps.setEx(key, JSONObject.toJSONString(permission, SerializerFeature.DisableCircularReferenceDetect), - 60L, TimeUnit.MINUTES); + 30L, TimeUnit.MINUTES); } private IdentityAuthRes.WorkspacePermission getIdentityAuthFromCache(String key) {