说一下场景,我的每一个XXXResource的每一个API基本上都需要一个用户ID,
因为client的每一次请求只会带来一个Token
现在我的做法是,在ContainerRequestFilter中做鉴权,然后鉴权完成后会手动的网HTTP头里面塞进去一个UID,然后在XXXResource的方法参数中中通过@HeaderParam("uid")的方式获取用户id,但是这样做,会导致每一个方法中都有一个这个uid参数,我想问一下有什么更加简便的方式去做这个事情
下面是我在ContainerRequestFilter中塞入UID的逻辑
@Override
public void filter(ContainerRequestContext requestContext)
throws IOException {
String auth = requestContext.getHeaderString(HttpHeaders.AUTHORIZATION);
if (StringUtils.isEmpty(auth)) {
LOG.debug("HTTP Header Authorization not found.");
throw new WebApplicationException(HttpStatus.SC_UNAUTHORIZED);
}
String userID = validateToken(auth);
requestContext.getHeaders().putSingle("UID", userID);
}