package com.ruoyi.common.security.feign;
|
|
import java.util.Map;
|
import javax.servlet.http.HttpServletRequest;
|
import org.springframework.stereotype.Component;
|
import com.ruoyi.common.core.constant.SecurityConstants;
|
import com.ruoyi.common.core.utils.ServletUtils;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.core.utils.ip.IpUtils;
|
import feign.RequestInterceptor;
|
import feign.RequestTemplate;
|
|
/**
|
* feign 请求拦截器
|
*
|
* @author ruoyi
|
*/
|
@Component
|
public class FeignRequestInterceptor implements RequestInterceptor
|
{
|
@Override
|
public void apply(RequestTemplate requestTemplate)
|
{
|
HttpServletRequest httpServletRequest = ServletUtils.getRequest();
|
if (StringUtils.isNotNull(httpServletRequest))
|
{
|
Map<String, String> headers = ServletUtils.getHeaders(httpServletRequest);
|
// 传递用户信息请求头,防止丢失
|
String userId = headers.get(SecurityConstants.DETAILS_USER_ID);
|
if (StringUtils.isNotEmpty(userId))
|
{
|
requestTemplate.header(SecurityConstants.DETAILS_USER_ID, userId);
|
}
|
String userKey = headers.get(SecurityConstants.USER_KEY);
|
if (StringUtils.isNotEmpty(userKey))
|
{
|
requestTemplate.header(SecurityConstants.USER_KEY, userKey);
|
}
|
String userName = headers.get(SecurityConstants.DETAILS_USERNAME);
|
if (StringUtils.isNotEmpty(userName))
|
{
|
requestTemplate.header(SecurityConstants.DETAILS_USERNAME, userName);
|
}
|
String authentication = headers.get(SecurityConstants.AUTHORIZATION_HEADER);
|
if (StringUtils.isNotEmpty(authentication))
|
{
|
requestTemplate.header(SecurityConstants.AUTHORIZATION_HEADER, authentication);
|
}
|
|
// 配置客户端IP
|
requestTemplate.header("X-Forwarded-For", IpUtils.getIpAddr());
|
}
|
}
|
}
|