RestEasy拦截器

时间:2016-08-15 19:51:24

标签: java rest resteasy

我想知道它是否像我目前努力实现的那样难。我在RESTEasy应用程序中使用Some Interceptor来保证安全性。拦截器实现javax.ws.rs.container.ContainerRequestFilter

我使用这样的代码来访问请求数据:

if (((PostMatchContainerRequestContext) requestContext).getHttpRequest().getHttpMethod().equals("GET")) {
   requestedId = Long.parseLong(requestContext.getUriInfo().getQueryParameters().get("id").get(0));
} else {
   postDataMap = getPostData(requestContext);
}

private LinkedHashMap getPostData(ContainerRequestContext requestContext) {
   Object obj = null;

    try {
       String result = IOUtils.toString(requestContext.getEntityStream());
       ObjectMapper mapper = new ObjectMapper();
       obj = mapper.readValue(result, Object.class);
       System.out.println(obj);
     } catch (IOException e) {
        e.printStackTrace();
     }
   return (LinkedHashMap) obj;
}

但是以这种方式访问​​请求数据这一点非常荒谬。现在我想访问DELETE-Request数据,但无法找到任何解决方案。有没有一种方法可以实现我目前正在做的事情?

2 个答案:

答案 0 :(得分:0)

通过拦截你的意思是在数据进入休息层之前检查数据?我通过实现Filter接口(https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/Filter.html)实现了这一点。

希望它有所帮助。 BR, 杜尚

答案 1 :(得分:0)

你可以在标题中设置安全信息,得到这样的值:

String logintoken = crc.getHeaderString("token");