【发布时间】:2015-06-19 03:15:00
【问题描述】:
我想包含一个过滤器,以便我可以检查每个请求的基本身份验证标头
import java.io.IOException;
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import javax.ws.rs.container.PreMatching;
@Provider
@PreMatching
public class CheckRequestFilter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext requestContext) throws IOException {
ServiceProvider sp = new ServiceProvider();
/*if (sp.authenticateSP(requestContext.getHeaderString("authorization")) == false){ */
requestContext.abortWith(
Response.status(Response.Status.BAD_REQUEST)
.entity("User cannot be authenticated")
.build());
}}
//}
到目前为止,这就是我按照https://jersey.java.net/documentation/latest/user-guide.html#filters-and-interceptors 此处的文档得出的结论
我的问题是我不知道如何包含过滤器以便我可以测试它(即复制粘贴第一个示例不起作用)以及我的方法是否正确。
我想在将来限制某些请求,但现在我只想工作。
【问题讨论】:
-
需要在Web.xml中添加过滤器类
-
@user1354678 我没有 web.xml。我不需要一个。我用球衣 2
-
只是不工作吗?尝试用 javax.ws.rs.ext.Provider 注释类
-
我也觉得,你可能想用这个:ContainerRequestFilter
-
@znurgl 添加提供者和预匹配是文档工作中的第一个示例。我正在调整我的代码,但到目前为止无济于事。
标签: java jersey servlet-filters jersey-2.0