[英]Resteasy security interceptor - how to obtain client IP address inside interceptor?
我已经实现了一个拦截器,以对带有以下注释的客户端IP地址进行安全检查-@Provider @ServerInterceptor @Precedence(“ SECURITY”)
预处理方法采用参数HttpRequest请求,ResourceMethod方法。 有没有一种方法可以从Resteasy HttpRequest对象获取客户端的IP地址? 我可以实现一个过滤器来解决此问题,但希望将安全检查放在一个地方。
客户端IP地址可从请求对象获得。 但是您不能将其用于安全目的,因为它不是每个客户端唯一的:它可能只是最近的代理地址,甚至您自己的代理地址。
这个(我的)答案是错误的! 仅在实例化过滤器类时才“注入” 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());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.