在基于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的兼容性?感谢您的见解!
答案 0 :(得分:3)
如果是本地Tomcat,则尝试不是http://localhost:8080/...
调用它,尝试通过http://127.0.0.1:8080/..
答案 1 :(得分:0)
晚会但仍然相关。将以下参数添加到启动脚本/运行配置将为您提供ipV4地址而不是ipV6。
-Djava.net.preferIPv4Stack =真