mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
去除前端传递organ-id依赖
This commit is contained in:
+2
-1
@@ -65,7 +65,8 @@ public class OrganSecurityWebFilter extends ApiRequestFilter {
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
|
||||
throws ServletException, IOException {
|
||||
Long organId = OrganContextHolder.getOrganId();
|
||||
Long organId = WebFrameworkUtils.getOrganId(request);
|
||||
//Long organId = OrganContextHolder.getOrganId();
|
||||
boolean isRpcRequest = WebFrameworkUtils.isRpcRequest(request);
|
||||
// 1. 登陆的用户,校验是否有权限访问该组织,避免越权问题。
|
||||
LoginUser user = SecurityFrameworkUtils.getLoginUser();
|
||||
|
||||
+1
@@ -151,6 +151,7 @@ chenfeng:
|
||||
organ: # 多组织相关配置项
|
||||
enable: true
|
||||
ignore-urls:
|
||||
- /rpc-api/**
|
||||
ignore-tables:
|
||||
sms-code: # 短信验证码相关的配置项
|
||||
expire-times: 10m
|
||||
|
||||
@@ -151,7 +151,7 @@ chenfeng:
|
||||
organ: # 多组织相关配置项
|
||||
enable: true
|
||||
ignore-urls:
|
||||
- /admin-api/manage/test
|
||||
- /rpc-api/**
|
||||
ignore-tables:
|
||||
- test
|
||||
sms-code: # 短信验证码相关的配置项
|
||||
|
||||
@@ -151,6 +151,7 @@ chenfeng:
|
||||
organ: # 多组织相关配置项
|
||||
enable: true
|
||||
ignore-urls:
|
||||
- /rpc-api/**
|
||||
ignore-tables:
|
||||
sms-code: # 短信验证码相关的配置项
|
||||
expire-times: 10m
|
||||
|
||||
+4
@@ -28,5 +28,9 @@ public class OAuth2AccessTokenCreateReqDTO implements Serializable {
|
||||
|
||||
@Schema(description = "授权范围的数组", example = "user_info")
|
||||
private List<String> scopes;
|
||||
@Schema(description = "组织id")
|
||||
private Long organId;
|
||||
@Schema(description = "数据源标识")
|
||||
private String dataCode;
|
||||
|
||||
}
|
||||
|
||||
+3
-2
@@ -40,14 +40,15 @@ public class OAuth2TokenApiImpl implements OAuth2TokenApi {
|
||||
throw new ServerException(10023,"组织不存在");
|
||||
}*/
|
||||
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(
|
||||
reqDTO.getUserId(), reqDTO.getUserType(), reqDTO.getClientId(), reqDTO.getScopes(), null, null, null, null);
|
||||
reqDTO.getUserId(), reqDTO.getUserType(), reqDTO.getClientId(), reqDTO.getScopes(), null, null, null, reqDTO.getDataCode(), reqDTO.getOrganId());
|
||||
return success(BeanUtils.toBean(accessTokenDO, OAuth2AccessTokenRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<OAuth2AccessTokenCheckRespDTO> checkAccessToken(String accessToken) {
|
||||
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.checkAccessToken(accessToken);
|
||||
return success(BeanUtils.toBean(accessTokenDO, OAuth2AccessTokenCheckRespDTO.class));
|
||||
OAuth2AccessTokenCheckRespDTO bean = BeanUtils.toBean(accessTokenDO, OAuth2AccessTokenCheckRespDTO.class);
|
||||
return success(bean);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+4
-1
@@ -1,6 +1,7 @@
|
||||
package com.cf.imes.module.system.dal.dataobject.oauth2;
|
||||
|
||||
import com.cf.imes.framework.common.enums.UserTypeEnum;
|
||||
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
@@ -25,7 +26,7 @@ import java.util.List;
|
||||
@KeySequence("system_oauth2_access_token_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class OAuth2AccessTokenDO extends OrganBaseDO {
|
||||
public class OAuth2AccessTokenDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 编号,数据库递增
|
||||
@@ -82,4 +83,6 @@ public class OAuth2AccessTokenDO extends OrganBaseDO {
|
||||
*/
|
||||
private String dataCode;
|
||||
|
||||
private Long organId;
|
||||
|
||||
}
|
||||
|
||||
+4
@@ -75,5 +75,9 @@ public class OAuth2RefreshTokenDO extends BaseDO {
|
||||
* 数据源编码
|
||||
*/
|
||||
private String dataCode;
|
||||
/**
|
||||
* 组织id
|
||||
*/
|
||||
private Long organId;
|
||||
|
||||
}
|
||||
|
||||
+1
@@ -133,6 +133,7 @@ public class ApplicationServiceImpl implements ApplicationService{
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null);
|
||||
// 构建返回结果
|
||||
return AuthConvert.INSTANCE.convert(accessTokenDO);
|
||||
|
||||
+5
-5
@@ -130,7 +130,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
||||
throw exception(ORGAN_DATA_CODE_NOT_EXISTS);
|
||||
}
|
||||
// 创建 Token 令牌,记录登录日志
|
||||
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME, dataSourceCode);
|
||||
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME, dataSourceCode, user.getOrganId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -161,7 +161,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
||||
}
|
||||
|
||||
// 创建 Token 令牌,记录登录日志
|
||||
return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE, dataSourceCode);
|
||||
return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE, dataSourceCode, organId);
|
||||
}
|
||||
|
||||
private void createLoginLog(Long userId, String username,
|
||||
@@ -206,7 +206,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
||||
}
|
||||
|
||||
// 创建 Token 令牌,记录登录日志
|
||||
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL, dataSourceCode);
|
||||
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL, dataSourceCode, organId);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -228,7 +228,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
||||
}
|
||||
}
|
||||
|
||||
private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType, String dataCode) {
|
||||
private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType, String dataCode, Long organId) {
|
||||
// 插入登陆日志
|
||||
createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS);
|
||||
/*Long organId = OrganContextHolder.getOrganId();
|
||||
@@ -238,7 +238,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
|
||||
}*/
|
||||
// 创建访问令牌
|
||||
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, getUserType().getValue(),
|
||||
OAuth2ClientConstants.CLIENT_ID_DEFAULT, null, null, null, null, dataCode);
|
||||
OAuth2ClientConstants.CLIENT_ID_DEFAULT, null, null, null, null, dataCode, organId);
|
||||
// 构建返回结果
|
||||
return AuthConvert.INSTANCE.convert(accessTokenDO);
|
||||
}
|
||||
|
||||
+3
-3
@@ -47,7 +47,7 @@ public class OAuth2GrantServiceImpl implements OAuth2GrantService {
|
||||
if(Objects.isNull(organ)) {
|
||||
throw new ServerException(10023,"组织不存在");
|
||||
}*/
|
||||
return oauth2TokenService.createAccessToken(userId, userType, clientId, scopes, null, null, null, null);
|
||||
return oauth2TokenService.createAccessToken(userId, userType, clientId, scopes, null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -85,7 +85,7 @@ public class OAuth2GrantServiceImpl implements OAuth2GrantService {
|
||||
|
||||
// 创建访问令牌
|
||||
return oauth2TokenService.createAccessToken(codeDO.getUserId(), codeDO.getUserType(),
|
||||
codeDO.getClientId(), codeDO.getScopes(),null, null, null, null);
|
||||
codeDO.getClientId(), codeDO.getScopes(),null, null, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -99,7 +99,7 @@ public class OAuth2GrantServiceImpl implements OAuth2GrantService {
|
||||
throw new ServerException(10023,"组织不存在");
|
||||
}*/
|
||||
// 创建访问令牌
|
||||
return oauth2TokenService.createAccessToken(user.getId(), UserTypeEnum.ADMIN.getValue(), clientId, scopes,null, null, null, null);
|
||||
return oauth2TokenService.createAccessToken(user.getId(), UserTypeEnum.ADMIN.getValue(), clientId, scopes,null, null, null, null,null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ public interface OAuth2TokenService {
|
||||
* @param scopes 授权范围
|
||||
* @return 访问令牌的信息
|
||||
*/
|
||||
OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List<String> scopes, Boolean large, Integer dbNo, Integer tableNo, String dataCode);
|
||||
OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List<String> scopes, Boolean large, Integer dbNo, Integer tableNo, String dataCode, Long organId);
|
||||
|
||||
/**
|
||||
* 刷新访问令牌
|
||||
|
||||
+4
-3
@@ -45,10 +45,10 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List<String> scopes,Boolean large, Integer dbNo, Integer tableNo, String dataCode) {
|
||||
public OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List<String> scopes,Boolean large, Integer dbNo, Integer tableNo, String dataCode, Long organId) {
|
||||
OAuth2ClientDO clientDO = oauth2ClientService.validOAuthClientFromCache(clientId);
|
||||
// 创建刷新令牌
|
||||
OAuth2RefreshTokenDO refreshTokenDO = createOAuth2RefreshToken(userId, userType, clientDO, scopes, large, dbNo, tableNo, dataCode);
|
||||
OAuth2RefreshTokenDO refreshTokenDO = createOAuth2RefreshToken(userId, userType, clientDO, scopes, large, dbNo, tableNo, dataCode, organId);
|
||||
// 创建访问令牌
|
||||
return createOAuth2AccessToken(refreshTokenDO, clientDO);
|
||||
}
|
||||
@@ -147,12 +147,13 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
|
||||
return accessTokenDO;
|
||||
}
|
||||
|
||||
private OAuth2RefreshTokenDO createOAuth2RefreshToken(Long userId, Integer userType, OAuth2ClientDO clientDO, List<String> scopes, Boolean large, Integer dbNo, Integer tableNo, String dataCode) {
|
||||
private OAuth2RefreshTokenDO createOAuth2RefreshToken(Long userId, Integer userType, OAuth2ClientDO clientDO, List<String> scopes, Boolean large, Integer dbNo, Integer tableNo, String dataCode, Long organId) {
|
||||
OAuth2RefreshTokenDO refreshToken = new OAuth2RefreshTokenDO().setRefreshToken(generateRefreshToken())
|
||||
.setUserId(userId).setUserType(userType)
|
||||
.setClientId(clientDO.getClientId()).setScopes(scopes)
|
||||
.setExpiresTime(LocalDateTime.now().plusSeconds(clientDO.getRefreshTokenValiditySeconds()))
|
||||
.setLarge(large).setDbNo(dbNo).setTableNo(tableNo).setDataCode(dataCode)
|
||||
.setOrganId(organId)
|
||||
;
|
||||
oauth2RefreshTokenMapper.insert(refreshToken);
|
||||
return refreshToken;
|
||||
|
||||
@@ -157,11 +157,13 @@ chenfeng:
|
||||
- /admin-api/system/label-template/*
|
||||
- /admin-api/system/machine-template/*
|
||||
- /admin-api/system/data-source/*
|
||||
- /rpc-api/system/organ/valid # 防止递归。避免调用 /rpc-api/system/organ/valid 接口时,又去触发 /rpc-api/system/organ/valid 去校验
|
||||
- /rpc-api/system/organ/id-list # 获得组织列表的时候,无需传递组织编号
|
||||
- /rpc-api/system/error-code/* # 错误码的自动创建与下载的接口,无法带上组织编号
|
||||
- /rpc-api/system/oauth2/token/check # 访问令牌校验时,无需传递组织编号;主要解决上传文件的场景,前端不会传递 tenant-id!
|
||||
- /rpc-api/system/permission/has-any-permissions
|
||||
- /admin-api/system/auth/login
|
||||
- /rpc-api/**
|
||||
#- /rpc-api/system/organ/valid # 防止递归。避免调用 /rpc-api/system/organ/valid 接口时,又去触发 /rpc-api/system/organ/valid 去校验
|
||||
#- /rpc-api/system/organ/id-list # 获得组织列表的时候,无需传递组织编号
|
||||
#- /rpc-api/system/error-code/* # 错误码的自动创建与下载的接口,无法带上组织编号
|
||||
#- /rpc-api/system/oauth2/token/check # 访问令牌校验时,无需传递组织编号;主要解决上传文件的场景,前端不会传递 tenant-id!
|
||||
#- /rpc-api/system/permission/has-any-permissions
|
||||
ignore-tables:
|
||||
- system_organization
|
||||
- system_tenant_package
|
||||
|
||||
Reference in New Issue
Block a user