Resteasy安全拦截器 - 如何在拦截器内获取客户端IP地址?

时间:2010-09-13 10:29:41

标签: java

我已经实现了一个拦截器,可以使用以下注释对客户端IP地址进行安全检查 - @Provider @ServerInterceptor @Precedence( “SECURITY”)

预处理方法采用参数HttpRequest请求,ResourceMethod方法。 有没有办法从Resteasy HttpRequest对象获取客户端的IP地址? 我可以实现一个过滤器来解决这个问题,但是我想在一个地方进行安全检查。

2 个答案:

答案 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());
    }