diff --git a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java index 812110560..5199e8f49 100644 --- a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java +++ b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java @@ -33,10 +33,8 @@ import cn.stylefeng.roses.kernel.auth.api.cookie.SessionCookieCreator; import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; -import cn.stylefeng.roses.kernel.cache.api.tenant.TenantCacheProxyFactory; import cn.stylefeng.roses.kernel.message.api.expander.WebSocketConfigExpander; import cn.stylefeng.roses.kernel.rule.callback.ConfigUpdateCallback; -import cn.stylefeng.roses.kernel.rule.constants.TenantConstants; import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil; import javax.servlet.http.Cookie; @@ -94,19 +92,16 @@ public class DefaultSessionManager implements SessionManagerApi, ConfigUpdateCal @Override public void createSession(String token, LoginUser loginUser, Boolean createCookie) { - CacheOperatorApi tenantCacheProxy = TenantCacheProxyFactory.createTenantCacheProxy(loginUser.getTenantCode(), loginUserCache); - CacheOperatorApi> allPlaceLoginTokenCacheProxy = TenantCacheProxyFactory.createTenantCacheProxy(loginUser.getTenantCode(), allPlaceLoginTokenCache); - // 装配用户信息的缓存 - tenantCacheProxy.put(token, loginUser, sessionExpiredSeconds); + loginUserCache.put(token, loginUser, sessionExpiredSeconds); // 装配用户token的缓存 - Set theUserTokens = allPlaceLoginTokenCacheProxy.get(loginUser.getUserId().toString()); + Set theUserTokens = allPlaceLoginTokenCache.get(loginUser.getUserId().toString()); if (theUserTokens == null) { theUserTokens = new HashSet<>(); } theUserTokens.add(token); - allPlaceLoginTokenCacheProxy.put(loginUser.getUserId().toString(), theUserTokens); + allPlaceLoginTokenCache.put(loginUser.getUserId().toString(), theUserTokens); // 如果开启了cookie存储会话信息,则需要给HttpServletResponse添加一个cookie if (createCookie) { @@ -128,8 +123,7 @@ public class DefaultSessionManager implements SessionManagerApi, ConfigUpdateCal @Override public LoginUser getSession(String token) { - CacheOperatorApi tenantCacheProxy = TenantCacheProxyFactory.createTenantCacheProxy(TenantConstants.MASTER_DATASOURCE_NAME, loginUserCache); - return tenantCacheProxy.get(token); + return loginUserCache.get(token); } @Override diff --git a/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java b/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java index 9f99d82ec..e1715e749 100644 --- a/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java +++ b/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java @@ -142,6 +142,20 @@ public interface CacheOperatorApi { */ String getCommonKeyPrefix(); + /** + * 是否按租户维度去切割缓存(不推荐开启) + *

+ * key的组成方式:租户前缀:业务前缀:业务key + *

+ * 如果不开启租户切割,则租户前缀一直会为master: + * + * @author fengshuonan + * @date 2022/11/9 19:02 + */ + default Boolean divideByTenant() { + return false; + } + /** * 获取最终的计算前缀 *

@@ -201,6 +215,14 @@ public interface CacheOperatorApi { */ default String getTenantPrefix() { + // 缓存是否按租户维度切分 + Boolean divideByTenantFlag = divideByTenant(); + + // 如果不按租户维度切分,则默认都返回为master + if (!divideByTenantFlag) { + return TenantConstants.MASTER_DATASOURCE_NAME; + } + // 用户的租户前缀 String tenantPrefix = ""; try {