|
@@ -37,13 +37,34 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
|
|
|
|
|
|
private final OAuth2TokenApi oauth2TokenApi;
|
|
|
|
|
|
+ /**
|
|
|
+ * 积木报表内部请求获取token
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static String getToken(HttpServletRequest request) {
|
|
|
+ String token = request.getParameter("token");
|
|
|
+ if (token == null) {
|
|
|
+ token = request.getHeader("X-Access-Token");
|
|
|
+ }
|
|
|
+ return token;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@SuppressWarnings("NullableProblems")
|
|
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
|
|
|
throws ServletException, IOException {
|
|
|
- String token = SecurityFrameworkUtils.obtainAuthorization(request, securityProperties.getTokenHeader());
|
|
|
+ String token;
|
|
|
+ Integer userType;
|
|
|
+ if (request.getRequestURI().startsWith("/jmreport/")) {
|
|
|
+ token = getToken(request);
|
|
|
+ userType = 2;
|
|
|
+ } else {
|
|
|
+ token = SecurityFrameworkUtils.obtainAuthorization(request, securityProperties.getTokenHeader());
|
|
|
+ userType = WebFrameworkUtils.getLoginUserType(request);
|
|
|
+ }
|
|
|
if (StrUtil.isNotEmpty(token)) {
|
|
|
- Integer userType = WebFrameworkUtils.getLoginUserType(request);
|
|
|
try {
|
|
|
// 1.1 基于 token 构建登录用户
|
|
|
LoginUser loginUser = buildLoginUserByToken(token, userType);
|
|
@@ -88,11 +109,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
|
|
|
*/
|