请告诉我如何在使用AuthenticationFailureBadCredentialsEvent时获得IP地址?
@Autowired
private LoginAttemptService loginAttemptService;
@EventListener
public void onAuthenticationFailure(AuthenticationFailureBadCredentialsEvent event) {
// How can I get the ip address here?
}
下面显示的选项不起作用。
WebAuthenticationDetails auth = (WebAuthenticationDetails) event.getAuthentication();
auth.getRemoteAddress();
1条答案
按热度按时间ojsjcaue1#
基于
javax.servlet.ServletRequest
接口具有关于远程主机的信息这一事实,我将给予两种可能的解决方案(我还没有测试它们)。1.使用
AuthenticationFailureHandler
:接口
AuthenticationFailureHandler
具有方法onAuthenticationFailure(HttpServletRequest, HttpServletResponse, AuthenticationException)
,该方法具有可用的请求javax.servlet.http.HttpServletRequest
。2.正在调用
RequestContextHolder
:这个上下文保持器能够通过方法
currentRequestAttributes
获得包含当前绑定到线程的servlet请求的请求属性。