从DAO层检索IP地址

时间:2013-01-31 11:34:21

标签: java spring spring-security dao

我使用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)。

有人能帮帮我吗?感谢。

1 个答案:

答案 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,那么最好将它作为参数发送给某些方法调用。