【发布时间】:2023-04-04 19:13:02
【问题描述】:
我正在修改我的WebFilter 上的HttpRequest,方法是使用HttpServletRequestWrapper 实现类向request 添加单个标头:
HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(request);
requestWrapper.addHeader(OAuth.OAUTH_ACCESS_TOKEN, accessTokenWord);
chain.doFilter(requestWrapper, response);
doFilter(requestWrapper, response) 执行后,JAX-RS 将请求引向其资源,该资源具有@RequestScoped 字段:
@Inject
protected HttpServletRequest request;
但是,它不包含任何预期的标头:
@PostConstruct
protected void initialize_resources() throws IllegalStateException {
this.currentUser = null;
String accessToken = this.request.getHeader(OAuth.OAUTH_ACCESS_TOKEN);
AccessToken accessToken = this.memcachedResources.getMemcachedAccessTokenRepository()
.get(accessToken);
if (accessToken != null && StringUtils.isNotEmpty(accessToken.getUser_id())) {
this.currentUser = this.em.find(User.class, accessToken.getUser_id());
this.currentClient = accessToken.getClientId();
}
}
所以,this.request.getHeader(OAuth.OAUTH_ACCESS_TOKEN) 是 null。
我该如何解决?
【问题讨论】:
标签: jakarta-ee jax-rs