fix: 积木报表 API 数据集解析时 token 未正确解析的问题

This commit is contained in:
gaibu
2023-01-07 02:08:22 +08:00
parent 717dd1ab7c
commit ee454ace9d
5 changed files with 151 additions and 28 deletions

View File

@ -2,8 +2,8 @@ package cn.iocoder.yudao.framework.common.enums;
/**
* Web 过滤器顺序的枚举类,保证过滤器按照符合我们的预期
*
* 考虑到每个 starter 都需要用到该工具类,所以放到 common 模块下的 enums 包下
* <p>
* 考虑到每个 starter 都需要用到该工具类,所以放到 common 模块下的 enums 包下
*
* @author 芋道源码
*/
@ -17,7 +17,9 @@ public interface WebFilterOrderEnum {
// OrderedRequestContextFilter 默认为 -105用于国际化上下文等等
int TENANT_CONTEXT_FILTER = - 104; // 需要保证在 ApiAccessLogFilter 前面
int JM_TOKEN_FILTER = -105; // 需要保证在 Spring Security 过滤前面
int TENANT_CONTEXT_FILTER = -104; // 需要保证在 ApiAccessLogFilter 前面
int API_ACCESS_LOG_FILTER = -103; // 需要保证在 RequestBodyCacheFilter 后面

View File

@ -20,8 +20,6 @@ public class SecurityProperties {
@NotEmpty(message = "Token Header 不能为空")
private String tokenHeader = "Authorization";
private String jmTokenHeader = "X-Access-Token";
/**
* mock 模式的开关
*/

View File

@ -21,7 +21,6 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Optional;
/**
* Token 过滤器,验证 token 的有效性
@ -63,25 +62,6 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
return;
}
}
// 积木请求头
String jmTokenHeader = request.getHeader(securityProperties.getJmTokenHeader());
if (StrUtil.isNotEmpty(jmTokenHeader)) {
try {
OAuth2AccessTokenCheckRespDTO accessToken = oauth2TokenApi.checkAccessToken(jmTokenHeader);
Optional<LoginUser> optUser = Optional.ofNullable(accessToken)
.map(
t -> new LoginUser().setId(t.getUserId())
.setUserType(t.getUserType())
.setTenantId(t.getTenantId())
.setScopes(t.getScopes())
);
if (optUser.isPresent()) {
SecurityFrameworkUtils.setLoginUser(optUser.get(), request);
}
} catch (ServiceException ignored) {
// do nothing如果报错说明认证失败忽略即可
}
}
// 继续过滤链
chain.doFilter(request, response);
@ -108,11 +88,11 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
/**
* 模拟登录用户,方便日常开发调试
* <p>
*
* 注意,在线上环境下,一定要关闭该功能!!!
*
* @param request 请求
* @param token 模拟的 token格式为 {@link SecurityProperties#getMockSecret()} + 用户编号
* @param request 请求
* @param token 模拟的 token格式为 {@link SecurityProperties#getMockSecret()} + 用户编号
* @param userType 用户类型
* @return 模拟的 LoginUser
*/