我使用spring-acegi,我想要DAO层的retreive ip地址。当我使用类似的东西时:
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null) {
WebAuthenticationDetails details1 = ((WebAuthenticationDetails)auth.getDetails());
if (details1 != null) {
userIp = details1.getRemoteAddress();
}
}
在身份验证时,auth为null,我无法检索ip地址。
我还尝试通过
获取IP地址String remoteAddress = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes())
.getRequest().getRemoteAddr();
但得到编译错误(我们使用GWT)。
有人能帮帮我吗?感谢。
答案 0 :(得分:0)
移动你的
String remoteAddress = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest().getRemoteAddr();
代码加入客户端和共享软件包的外部类。查看您的app * .gwt.xml描述符。例如,如果您将com / domain / App.gwt.xml作为GWT描述符,并且您的源包被声明为
<source path="client" />
<source path="shared" />
然后您必须在 com.domain.client 和 com.domain.shared 包之外编写代码。
考虑一些代码的重构。如果DAO层绝对需要知道IP,那么最好将它作为参数发送给某些方法调用。