Commit 73b1649b75dece37d078fe63fb925dcedbf12995

Authored by gaibu
1 parent eadb564a

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

yudao-module-visualization/yudao-module-visualization-biz/src/main/java/cn/iocoder/yudao/module/visualization/framework/jmreport/config/JmReportConfiguration.java
1 package cn.iocoder.yudao.module.visualization.framework.jmreport.config; 1 package cn.iocoder.yudao.module.visualization.framework.jmreport.config;
2 2
  3 +import cn.iocoder.yudao.framework.security.config.SecurityProperties;
3 import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi; 4 import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi;
4 import cn.iocoder.yudao.module.visualization.framework.jmreport.core.service.JmReportTokenServiceImpl; 5 import cn.iocoder.yudao.module.visualization.framework.jmreport.core.service.JmReportTokenServiceImpl;
5 import org.jeecg.modules.jmreport.api.JmReportTokenServiceI; 6 import org.jeecg.modules.jmreport.api.JmReportTokenServiceI;
@@ -18,8 +19,8 @@ public class JmReportConfiguration { @@ -18,8 +19,8 @@ public class JmReportConfiguration {
18 19
19 @Bean 20 @Bean
20 @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") 21 @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
21 - public JmReportTokenServiceI jmReportTokenService(OAuth2TokenApi oAuth2TokenApi) {  
22 - return new JmReportTokenServiceImpl(oAuth2TokenApi); 22 + public JmReportTokenServiceI jmReportTokenService(OAuth2TokenApi oAuth2TokenApi, SecurityProperties securityProperties) {
  23 + return new JmReportTokenServiceImpl(oAuth2TokenApi, securityProperties);
23 } 24 }
24 25
25 } 26 }
yudao-module-visualization/yudao-module-visualization-biz/src/main/java/cn/iocoder/yudao/module/visualization/framework/jmreport/core/service/JmReportTokenServiceImpl.java
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
4 import cn.hutool.core.util.StrUtil; 4 import cn.hutool.core.util.StrUtil;
5 import cn.iocoder.yudao.framework.common.exception.ServiceException; 5 import cn.iocoder.yudao.framework.common.exception.ServiceException;
6 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; 6 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
  7 +import cn.iocoder.yudao.framework.security.config.SecurityProperties;
7 import cn.iocoder.yudao.framework.security.core.LoginUser; 8 import cn.iocoder.yudao.framework.security.core.LoginUser;
8 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; 9 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
9 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; 10 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
@@ -25,31 +26,35 @@ import java.util.Objects; @@ -25,31 +26,35 @@ import java.util.Objects;
25 @RequiredArgsConstructor 26 @RequiredArgsConstructor
26 public class JmReportTokenServiceImpl implements JmReportTokenServiceI { 27 public class JmReportTokenServiceImpl implements JmReportTokenServiceI {
27 28
28 - private static final String JM_TOKEN_HEADER = "X-Access-Token";  
29 /** 29 /**
30 - * 系统内置请求头 30 + * 积木 token head 头
31 */ 31 */
32 - private static final String TOKEN_HEADER = "Authorization"; 32 + private static final String JM_TOKEN_HEADER = "X-Access-Token";
33 /** 33 /**
34 * auth 相关格式 34 * auth 相关格式
35 */ 35 */
36 - private static final String AUTHORIZATION_FORMAT = "Bearer %s"; 36 + private static final String AUTHORIZATION_FORMAT = SecurityFrameworkUtils.AUTHORIZATION_BEARER + " %s";
37 37
38 private final OAuth2TokenApi oauth2TokenApi; 38 private final OAuth2TokenApi oauth2TokenApi;
39 39
  40 + private final SecurityProperties securityProperties;
  41 +
40 /** 42 /**
41 - * 修改请求的 head 43 + * 自定义 API 数据集appian自定义 Header,解决 Token 传递。
  44 + * 参考 <a href="http://report.jeecg.com/2222224">api数据集token机制详解</a> 文档
42 * 45 *
43 * @return 新 head 46 * @return 新 head
44 */ 47 */
45 @Override 48 @Override
46 public HttpHeaders customApiHeader() { 49 public HttpHeaders customApiHeader() {
47 - HttpHeaders header = new HttpHeaders(); 50 + // 读取积木标标系统的 token
48 HttpServletRequest request = ServletUtils.getRequest(); 51 HttpServletRequest request = ServletUtils.getRequest();
49 String token = request.getHeader(JM_TOKEN_HEADER); 52 String token = request.getHeader(JM_TOKEN_HEADER);
50 53
51 - header.add(TOKEN_HEADER, String.format(AUTHORIZATION_FORMAT, token));  
52 - return header; 54 + // 设置到 yudao 系统的 token
  55 + HttpHeaders headers = new HttpHeaders();
  56 + headers.add(securityProperties.getTokenHeader(), String.format(AUTHORIZATION_FORMAT, token));
  57 + return headers;
53 } 58 }
54 59
55 /** 60 /**