在基于 Spring 3 的 Web 应用程序中,我使用 AbstractUserDetailsAuthenticationProvider 的自定义实现,不仅可以检查用户名/密码对,还可以检查客户端的 IP 地址。但是,当我在内部调用时retrieveUser()
:
@Override
protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication) throws AuthenticationException {
...
String ipAddr = ((WebAuthenticationDetails)authentication.getDetails()).getRemoteAddress();
...
User user = ...
return user;
}
它返回0:0:0:0:0:0:0:1%0
。这将是 localhost 的 IP v6 地址。如果该方法返回 IP v6 地址,我现在如何检查 IP v4 地址白名单?我可以为白名单提供与 IP v4 和 v6 的兼容性吗?感谢您的见解!