簡體   English   中英

如何在ContainerRequestFilter中獲取遠程IP

[英]How to get the remote IP in a ContainerRequestFilter

我有這個類,想要記錄其余的請求:

public class RequestFilter implements ContainerRequestFilter {

    private static final Logger LOG = LoggerFactory.getLogger(RequestFilter.class);

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
        LOG.info("REST-Request from '{}' for '{}'", "XXX", requestContext.getUriInfo().getPath());
        // ... and do some auth stuff (not relevant for this question)
    }
}

如何獲取請求的遠程IP? TIA!

嘗試這個:

public class RequestFilter implements ContainerRequestFilter {

    private static final Logger LOG = LoggerFactory.getLogger(RequestFilter.class);

    @Context
    private HttpServletRequest request;

    // rest of your stuff here

遲到的回復,但這可能會幫助其他人使用Grizzly2 ......

import javax.servlet.http.HttpServletRequest;
import org.glassfish.grizzly.http.server.Request;

public class RequestFilter implements ContainerRequestFilter {

    private static final Logger LOG = LoggerFactory.getLogger(RequestFilter.class);

    @Context
    private HttpServletRequest httpServletRequest;

    @Inject
    private Provider<Request> grizzlyRequest;

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
        String remoteIpAddress;
        if (httpServletRequest != null) {
            // JSR-315/JSR-339 compliant server
            remoteIpAddress = httpServletRequest.getRemoteAddr();
        } else {
            // Grizzly2 server
            remoteIpAddress = grizzlyRequest.get().getRemoteAddr();
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM