java - 有没有办法为请求自定义 FilterChain (JAX-RS)
问题描述
我在 Java 后端工作,运行 Wildfly 服务器。对于每个资源过滤器都应该像验证用户一样执行。应该跳过一些过滤器,我问自己是否有一种编程方式来定义自己的过滤器链。
到目前为止,我在第一个过滤器中设置了一个上下文属性(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());
}
}
}
}
它不是美丽的,根据以下过滤器,它可能会一团糟。你知道我如何实现动态过滤器链吗?
解决方案
推荐阅读
- firebase - Vue js - 在数据库插入时重新加载组件
- mysql - ST_Area() for latitude and longitude
- node.js - 使用restify-cors-middleware时如何解决restify中的Cors Policy错误
- swift - Swift hide back button
- php - how to remove comma in numbers and insert to table in laravel
- r - 尝试在 R 中提取 TEI xml 属性时获取空列表
- android - 约束布局中的屏障中的错误
- javascript - 我如何从表的每一行中获取值并将它们存储在 js 数组中
- google-sheets-query - 基于多列对谷歌表格中的数据求和
- c - mbedTLS ECC 操作