Spring Security:如何拦截PageNotFound

这似乎是一个简单的问题,但我们在互联网上找不到任何地方。

我们正在使用Spring Security 3.2,我们希望能够在收到spring消息时打印远程主机的IP:

WARN  [org.springframework.web.servlet.PageNotFound] - No mapping found for HTTP request with URI [/page.bla] in DispatcherServlet with name 'XXX'.

我们怎么可能做到这一点?

回答:

您的问题与无关spring-security。此日志消息是在DispatcherServlet类中生成的。

您可以扩展org.springframework.web.servlet.DispatcherServlet和覆盖protected void

noHandlerFound(HttpServletRequest request, HttpServletResponse response)

throws Exception方法:

protected void noHandlerFound(HttpServletRequest request, HttpServletResponse response) throws Exception {

if (pageNotFoundLogger.isWarnEnabled()) {

String requestUri = urlPathHelper.getRequestUri(request);

pageNotFoundLogger.warn("No mapping found for HTTP request with URI [" + requestUri +"] in DispatcherServlet with name '" + getServletName() + "'");

}

response.sendError(HttpServletResponse.SC_NOT_FOUND);

}

通过这种方式,您可以自定义日志消息并向其添加来自HttpServletRequest参数的IP地址:

request.getRemoteAddr();

我不确定这是否是个好习惯。但是应该可以。

希望这可以帮助!!

以上是 Spring Security:如何拦截PageNotFound 的全部内容, 来源链接: utcz.com/qa/409730.html

回到顶部