我已经实现了一个拦截器,可以使用以下注释对客户端IP地址进行安全检查 - @Provider @ServerInterceptor @Precedence( “SECURITY”)
预处理方法采用参数HttpRequest请求,ResourceMethod方法。 有没有办法从Resteasy HttpRequest对象获取客户端的IP地址? 我可以实现一个过滤器来解决这个问题,但是我想在一个地方进行安全检查。
答案 0 :(得分:1)
客户端IP地址可从请求对象获得。但是你不能将它用于安全目的,因为它不是每个客户端唯一的:它可能只是最近的代理的地址,甚至是你自己的地址。
答案 1 :(得分:0)
这(我)的回答是错误的! 只有在实例化过滤器类时才会“注入”HttpServletRequest,因此实例“看到”所有后续请求的相同HttpServletRequest(HttpServletREquest始终是第一个!!!!!)
你可以注入HttpServletRequest对象来访问客户端ip(我正在使用它)
@Provider
@Interceptor
@Precedence("SECURITY")
public class JAXRSInterceptor implements PreProcessInterceptor
{
**@Context HttpServletRequest request; // WRONG WRONG WRONG**
@Override
public ServerResponse preProcess(HttpRequest arg0, ResourceMethod arg1) throws Failure, WebApplicationException
{
System.out.println(request.getRemoteAddr());
System.out.println(request.getRemoteHost());
}