【发布时间】:2019-05-31 09:08:28
【问题描述】:
我想拦截请求,并使用 feign RequestInterceptor 将 access_token 添加到 header 中。 但是当我在拦截器中调试时,我无法获取属性。它是空的。 我怎么才能得到它?
@Override
public void apply(RequestTemplate requestTemplate) {
//the attributes is null, what happened
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
if(ObjectUtil.isNull(attributes))
{
return;
}
HttpServletRequest request = Objects.requireNonNull(attributes).getRequest();
if(ObjectUtil.isNull(request))
{
return;
}
if(request.getRequestURI().contains(SecurityConstants.MOBILE_TOKEN_URL))
{
requestTemplate.header("x-access-type", SecurityConstants.ACCESS_TYPE_PATIENT);
return;
}
if(request.getRequestURI().contains(SecurityConstants.REGISTER_TOKEN_URL))
{
requestTemplate.header("x-access-type", SecurityConstants.ACCESS_TYPE_PATIENT);
return;
}
Enumeration<String> headerNames = request.getHeaderNames();
if (ObjectUtil.isNotNull(headerNames)) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
if(name.equalsIgnoreCase("Authorization")) {
String values = request.getHeader(name);
requestTemplate.header(name, values);
break;
}
}
}
}
【问题讨论】:
标签: feign