mirror of https://gitee.com/stylefeng/roses
【7.1.3】【bugfix】获取当前登录用户操作数据库的操作进行租户切换考虑
parent
e98a77d165
commit
3868f282bf
|
@ -17,6 +17,14 @@
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- 多数据源操作的api -->
|
||||||
|
<!-- 获取当前登录用户之前需要切数据源 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.stylefeng.roses</groupId>
|
||||||
|
<artifactId>ds-container-api</artifactId>
|
||||||
|
<version>${roses.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!--demo api-->
|
<!--demo api-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.stylefeng.roses</groupId>
|
<groupId>cn.stylefeng.roses</groupId>
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
*/
|
*/
|
||||||
package cn.stylefeng.roses.kernel.auth.auth;
|
package cn.stylefeng.roses.kernel.auth.auth;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.stylefeng.roses.kernel.auth.api.LoginUserApi;
|
import cn.stylefeng.roses.kernel.auth.api.LoginUserApi;
|
||||||
import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi;
|
import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi;
|
||||||
|
@ -32,6 +33,8 @@ import cn.stylefeng.roses.kernel.auth.api.exception.AuthException;
|
||||||
import cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum;
|
import cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum;
|
||||||
import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
|
import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
|
||||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
||||||
|
import cn.stylefeng.roses.kernel.dsctn.api.context.CurrentDataSourceContext;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
||||||
import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil;
|
import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil;
|
||||||
import cn.stylefeng.roses.kernel.system.api.UserServiceApi;
|
import cn.stylefeng.roses.kernel.system.api.UserServiceApi;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -113,8 +116,19 @@ public class LoginUserImpl implements LoginUserApi {
|
||||||
throw new AuthException(AuthExceptionEnum.AUTH_EXPIRED_ERROR);
|
throw new AuthException(AuthExceptionEnum.AUTH_EXPIRED_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取当前上下文的数据源名称
|
||||||
|
String dataSourceName = CurrentDataSourceContext.getDataSourceName();
|
||||||
|
|
||||||
|
// 如果当前用户有租户编码,则需要切下数据源
|
||||||
|
if (ObjectUtil.isNotEmpty(session.getTenantCode())) {
|
||||||
|
CurrentDataSourceContext.setDataSourceName(RuleConstants.TENANT_DB_PREFIX + session.getTenantCode());
|
||||||
|
}
|
||||||
|
try {
|
||||||
// 从新组装一次loginUser,保证loginUser中数据的时效性
|
// 从新组装一次loginUser,保证loginUser中数据的时效性
|
||||||
return userServiceApi.getEffectiveLoginUser(session);
|
return userServiceApi.getEffectiveLoginUser(session);
|
||||||
|
} finally {
|
||||||
|
CurrentDataSourceContext.setDataSourceName(dataSourceName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue