mirror of https://gitee.com/stylefeng/roses
【7.3.2】【auth】更新基于token创建会话的过程,增加租户的用户会话
parent
458744e381
commit
266b6173b1
|
@ -129,11 +129,11 @@ public interface AuthServiceApi {
|
||||||
* 为指定token创建新的登录信息
|
* 为指定token创建新的登录信息
|
||||||
*
|
*
|
||||||
* @param token 用户旧的token
|
* @param token 用户旧的token
|
||||||
* @param account 用户账号
|
* @param defaultJwtPayload jwt的payload信息
|
||||||
* @return 新的当前登录用户
|
* @return 新的当前登录用户
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @date 2022/10/17 0:04
|
* @date 2022/10/17 0:04
|
||||||
*/
|
*/
|
||||||
LoginUser createNewLoginInfo(String token, String account);
|
LoginUser createNewLoginInfo(String token, DefaultJwtPayload defaultJwtPayload);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,8 @@ import cn.stylefeng.roses.kernel.auth.api.pojo.sso.SsoLoginCodeRequest;
|
||||||
import cn.stylefeng.roses.kernel.auth.api.pojo.sso.SsoProperties;
|
import cn.stylefeng.roses.kernel.auth.api.pojo.sso.SsoProperties;
|
||||||
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
|
import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
|
||||||
import cn.stylefeng.roses.kernel.demo.expander.DemoConfigExpander;
|
import cn.stylefeng.roses.kernel.demo.expander.DemoConfigExpander;
|
||||||
|
import cn.stylefeng.roses.kernel.dsctn.api.constants.DatasourceContainerConstants;
|
||||||
|
import cn.stylefeng.roses.kernel.dsctn.api.context.CurrentDataSourceContext;
|
||||||
import cn.stylefeng.roses.kernel.jwt.JwtTokenOperator;
|
import cn.stylefeng.roses.kernel.jwt.JwtTokenOperator;
|
||||||
import cn.stylefeng.roses.kernel.jwt.api.context.JwtContext;
|
import cn.stylefeng.roses.kernel.jwt.api.context.JwtContext;
|
||||||
import cn.stylefeng.roses.kernel.jwt.api.exception.JwtException;
|
import cn.stylefeng.roses.kernel.jwt.api.exception.JwtException;
|
||||||
|
@ -63,6 +65,7 @@ import cn.stylefeng.roses.kernel.jwt.api.pojo.config.JwtConfig;
|
||||||
import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload;
|
import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload;
|
||||||
import cn.stylefeng.roses.kernel.log.api.LoginLogServiceApi;
|
import cn.stylefeng.roses.kernel.log.api.LoginLogServiceApi;
|
||||||
import cn.stylefeng.roses.kernel.message.api.expander.WebSocketConfigExpander;
|
import cn.stylefeng.roses.kernel.message.api.expander.WebSocketConfigExpander;
|
||||||
|
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
||||||
import cn.stylefeng.roses.kernel.rule.tenant.RequestTenantCodeHolder;
|
import cn.stylefeng.roses.kernel.rule.tenant.RequestTenantCodeHolder;
|
||||||
import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil;
|
import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil;
|
||||||
import cn.stylefeng.roses.kernel.scanner.api.exception.ScannerException;
|
import cn.stylefeng.roses.kernel.scanner.api.exception.ScannerException;
|
||||||
|
@ -270,13 +273,32 @@ public class AuthServiceImpl implements AuthServiceApi {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoginUser createNewLoginInfo(String token, String account) {
|
public LoginUser createNewLoginInfo(String token, DefaultJwtPayload defaultJwtPayload) {
|
||||||
|
|
||||||
// 获取用户的信息
|
// 获取用户的信息
|
||||||
UserLoginInfoDTO userLoginInfo = userServiceApi.getUserLoginInfo(account);
|
String account = defaultJwtPayload.getAccount();
|
||||||
|
|
||||||
|
// 获取用户租户信息
|
||||||
|
String tenantCode = defaultJwtPayload.getTenantCode();
|
||||||
|
|
||||||
|
UserLoginInfoDTO userLoginInfo;
|
||||||
|
try {
|
||||||
|
// 如果有特定租户则进行切换操作
|
||||||
|
if (StrUtil.isNotEmpty(tenantCode) && !DatasourceContainerConstants.MASTER_DATASOURCE_NAME.equals(tenantCode)) {
|
||||||
|
CurrentDataSourceContext.setDataSourceName(RuleConstants.TENANT_DB_PREFIX + tenantCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取用户信息
|
||||||
|
userLoginInfo = userServiceApi.getUserLoginInfo(account);
|
||||||
|
LoginUser loginUser = userLoginInfo.getLoginUser();
|
||||||
|
loginUser.setTenantCode(tenantCode);
|
||||||
|
|
||||||
// 创建用户会话信息
|
// 创建用户会话信息
|
||||||
sessionManagerApi.updateSession(token, userLoginInfo.getLoginUser());
|
sessionManagerApi.updateSession(token, loginUser);
|
||||||
|
} finally {
|
||||||
|
// 清除租户信息
|
||||||
|
CurrentDataSourceContext.clearDataSourceName();
|
||||||
|
}
|
||||||
|
|
||||||
return userLoginInfo.getLoginUser();
|
return userLoginInfo.getLoginUser();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue