提交 1c17de32 编写于 作者: zlt2000's avatar zlt2000

优化代码

上级 845df448
......@@ -19,7 +19,7 @@ public interface SecurityConstants {
/**
* 用户id信息头
*/
String USER_ID_HEADER = "x-userId-header";
String USER_ID_HEADER = "x-userid-header";
/**
* 角色信息头
......@@ -30,7 +30,6 @@ public interface SecurityConstants {
* 租户信息头(应用)
*/
String TENANT_HEADER = "x-tenant-header";
String CLIENT_HEADER = "x-client-header";
/**
* 基础角色
......
......@@ -3,7 +3,7 @@ package com.central.common.interceptor;
import cn.hutool.core.util.StrUtil;
import com.central.common.constant.CommonConstant;
import com.central.common.constant.SecurityConstants;
import com.central.common.utils.TenantContextHolder;
import com.central.common.context.TenantContextHolder;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
......
......@@ -3,7 +3,7 @@ package com.central.db.config;
import com.baomidou.mybatisplus.core.parser.ISqlParserFilter;
import com.baomidou.mybatisplus.core.parser.SqlParserHelper;
import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler;
import com.central.common.utils.TenantContextHolder;
import com.central.common.context.TenantContextHolder;
import com.central.common.properties.TenantProperties;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.NullValue;
......
......@@ -3,15 +3,18 @@ package com.central.common.ribbon.config;
import cn.hutool.core.util.StrUtil;
import com.central.common.constant.CommonConstant;
import com.central.common.constant.SecurityConstants;
import com.central.common.utils.TenantContextHolder;
import com.central.common.context.TenantContextHolder;
import feign.RequestInterceptor;
import org.slf4j.MDC;
import org.springframework.context.annotation.Bean;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
/**
* feign拦截器
......@@ -19,9 +22,17 @@ import java.util.Enumeration;
* @author zlt
*/
public class FeignInterceptorConfig {
protected List<String> requestHeaders = new ArrayList<>();
@PostConstruct
public void initialize() {
requestHeaders.add(SecurityConstants.USER_ID_HEADER);
requestHeaders.add(SecurityConstants.USER_HEADER);
requestHeaders.add(SecurityConstants.ROLE_HEADER);
}
/**
* 使用feign client访问别的微服务时,将access_token、username、roles、client等信息放入header传递给下一个服务
* 使用feign client访问别的微服务时,将上游传过来的access_token、username、roles、client等信息放入header传递给下一个服务
*/
@Bean
public RequestInterceptor requestInterceptor() {
......@@ -30,7 +41,18 @@ public class FeignInterceptorConfig {
.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
String headerName;
String headerValue;
while(headerNames.hasMoreElements()) {
headerName = headerNames.nextElement();
if (requestHeaders.contains(headerName)) {
headerValue = request.getHeader(headerName);
template.header(headerName, headerValue);
}
}
}
//传递access_token,无网络隔离时需要传递
/*
String token = extractHeaderToken(request);
......@@ -41,36 +63,17 @@ public class FeignInterceptorConfig {
template.header(CommonConstant.TOKEN_HEADER, CommonConstant.BEARER_TYPE + " " + token);
}
*/
}
//传递client
String tenant = TenantContextHolder.getTenant();
if (StrUtil.isNotEmpty(tenant)) {
template.header(SecurityConstants.TENANT_HEADER, tenant);
}
//传递userid
String userid = request.getHeader(SecurityConstants.USER_ID_HEADER);
if (StrUtil.isNotEmpty(userid)) {
template.header(SecurityConstants.USER_ID_HEADER, userid);
}
//传递username
String username = request.getHeader(SecurityConstants.USER_HEADER);
if (StrUtil.isNotEmpty(username)) {
template.header(SecurityConstants.USER_HEADER, username);
}
//传递roles
String roles = request.getHeader(SecurityConstants.ROLE_HEADER);
if (StrUtil.isNotEmpty(roles)) {
template.header(SecurityConstants.ROLE_HEADER, roles);
}
//传递client
String tenant = TenantContextHolder.getTenant();
if (StrUtil.isNotEmpty(tenant)) {
template.header(SecurityConstants.TENANT_HEADER, tenant);
}
//传递日志traceId
String traceId = MDC.get(CommonConstant.LOG_TRACE_ID);
if (StrUtil.isNotEmpty(traceId)) {
template.header(CommonConstant.TRACE_ID_HEADER, traceId);
}
//传递日志traceId
String traceId = MDC.get(CommonConstant.LOG_TRACE_ID);
if (StrUtil.isNotEmpty(traceId)) {
template.header(CommonConstant.TRACE_ID_HEADER, traceId);
}
};
return requestInterceptor;
......@@ -80,7 +83,7 @@ public class FeignInterceptorConfig {
* 解析head中的token
* @param request
*/
private static String extractHeaderToken(HttpServletRequest request) {
private String extractHeaderToken(HttpServletRequest request) {
Enumeration<String> headers = request.getHeaders(CommonConstant.TOKEN_HEADER);
while (headers.hasMoreElements()) {
String value = headers.nextElement();
......
......@@ -54,7 +54,6 @@
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<!--<version>1.5.0</version>-->
</dependency>
<dependency>
......
......@@ -2,7 +2,7 @@ package com.central.oauth.controller;
import com.central.common.constant.SecurityConstants;
import com.central.common.utils.ResponseUtil;
import com.central.common.utils.TenantContextHolder;
import com.central.common.context.TenantContextHolder;
import com.central.oauth2.common.token.MobileAuthenticationToken;
import com.central.oauth2.common.token.OpenIdAuthenticationToken;
import com.central.oauth2.common.util.AuthUtils;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册