Skip to content

Commit 6b24555

Browse files
committed
feat: feign 拦截器传递内部请求标识头
1 parent 257abac commit 6b24555

2 files changed

Lines changed: 23 additions & 3 deletions

File tree

framework/framework_api/src/main/java/com/github/cadecode/uniboot/framework/api/config/FeignConfig.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,24 +42,27 @@ public RequestInterceptor requestInterceptor() {
4242
}
4343

4444
protected void configRequestTemplate(RequestTemplate requestTemplate) {
45+
// 设置内部请求来源标识
46+
requestTemplate.header(SecurityConst.HEAD_SOURCE, SecurityConst.HEAD_SOURCE_VALUE);
4547
HttpServletRequest servletRequest = RequestUtil.getRequest();
4648
if (ObjectUtil.isNull(servletRequest)) {
4749
return;
4850
}
51+
// 配置客户端 IP
52+
requestTemplate.header("X-Forwarded-For", ServletUtil.getClientIP(servletRequest));
4953
// 传递用户 token
5054
String token = SecurityUtil.getTokenFromRequest(servletRequest);
5155
if (StrUtil.isNotEmpty(token)) {
5256
requestTemplate.header(SecurityConst.HEAD_TOKEN, token);
5357
}
54-
// 传递用户详细信息
58+
// 传递用户信息
5559
String userDetailsJson = ServletUtil.getHeader(servletRequest, SecurityConst.HEAD_USER_DETAILS, CharsetUtil.CHARSET_UTF_8);
60+
// 不存在则生成
5661
if (StrUtil.isEmpty(userDetailsJson)) {
5762
SysUserDetailsDto userDetailsDto = SecurityUtil.getUserDetails(null);
5863
userDetailsJson = JacksonUtil.toJson(userDetailsDto);
5964
}
6065
requestTemplate.header(SecurityConst.HEAD_USER_DETAILS, EscapeUtil.escape(userDetailsJson));
61-
// 配置客户端 IP
62-
requestTemplate.header("X-Forwarded-For", ServletUtil.getClientIP(servletRequest));
6366
}
6467

6568
// 覆盖 feign 配置

framework/framework_api/src/main/java/com/github/cadecode/uniboot/framework/api/consts/SecurityConst.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,24 @@
88
*/
99
public interface SecurityConst {
1010

11+
/**
12+
* token 请求头名称
13+
*/
1114
String HEAD_TOKEN = "token";
1215

16+
/**
17+
* 请求来源请求头名称
18+
*/
19+
String HEAD_SOURCE = "from-source";
20+
21+
/**
22+
* 请求来源请求头固定值
23+
*/
24+
String HEAD_SOURCE_VALUE = "inner-rpc";
25+
26+
/**
27+
* 用户信息请求头名称
28+
*/
1329
String HEAD_USER_DETAILS = "inner-user-details";
30+
1431
}

0 commit comments

Comments
 (0)