有没有办法为请求自定义过滤链(JAX-RS)

时间:2021-05-05 17:17:56

标签: java rest jax-rs

我在 Java 后端工作,运行 Wildfly 服务器。对于每个资源过滤器都应该像验证用户一样执行。应该跳过一些过滤器,我问自己是否有一种以编程方式定义自己的 FilterChain 的方法。

到目前为止,我在第一个过滤器中设置了上下文属性 (executeAuthorizationFilter),并在下一个过滤器中进行了检查。

    @Provider
    @Priority(1100)
    public class AuthenticationFilter implements ContainerRequestFilter {
    
        @Context
        private ResourceInfo resourceInfo;
    
        @Override
        public void filter(ContainerRequestContext context) throws IOException {
    
            // Next filter should be skipped in case - next filter has check on this prop
            if(resourceInfo.getResourceMethod().getAnnotation(PermitAll.class) != null) {
                context.setProperty("executeAuthorizationFilter", false);
            } else {
                //check if token is valid
                String jwtToken = context.getHeaderString(JWTTokenHelper.tokenName);
     

           boolean isTokenValid = false;

            try {
                // TODO check for validation and exp
                isTokenValid = JWTTokenHelper.validateUserToken(jwtToken);
            } catch (NullPointerException exception) {
                context.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
            }

            if(!isTokenValid) {
                context.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
            }

        }

    }
}

它不是美丽的,根据以下过滤器,它可能是一团糟。你知道我如何实现动态过滤器链吗?

0 个答案:

没有答案
相关问题