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