qeveeqnui 2009-06-04 11:28
浏览 249
已采纳

Acegi(Spring Security)登录的处理。

Spring Acegi提供了登录后置处理功能,这是通过ApplicationEvent事件触发的,我实现
该功能,但是无法获取用户IP,如何获取用户IP,麻烦那位指点一二。
代码大概如下所示:
public void onApplicationEvent(ApplicationEvent event) {

if (event instanceof AuthenticationSuccessEvent) {①判断是否是认证成功的事件

AuthenticationSuccessEvent authEvent = (AuthenticationSuccessEvent)event;

Authentication auth = authEvent.getAuthentication();

String userName = auth.getName();

②这里,我们仅通过一条输出信息的语句模拟记录登录日志的操作

System.out.println("模拟记录用户["+userName+"]成功登录日志...");

}

}

}

[b]问题补充:[/b]
我的代码如下:
public class LoginSuccessListener implements ApplicationListener {
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof AuthenticationSuccessEvent) {①判断是否是认证成功的事件
AuthenticationSuccessEvent authEvent = (AuthenticationSuccessEvent)event;
Authentication auth = authEvent.getAuthentication();
String userName = auth.getName();
②这里,我们仅通过一条输出信息的语句模拟记录登录日志的操作
System.out.println("模拟记录用户["+userName+"]成功登录日志...");
}
}
}


}
注意了是实现了ApplicationListener接口,你所说的:WebAuthenticationDetails WebDetail = (WebAuthenticationDetails) SecurityContextHolder
.getContext().getAuthentication().getDetails(); 取值为null.
[b]问题补充:[/b]
你看我糊涂的,ecurityContextHolder
.getContext().getAuthentication() 取值为null,那可以用authEvent.getAuthentication()去取

  • 写回答

1条回答 默认 最新

  • lifeneedyou 2009-06-04 17:16
    关注

    [b]WebAuthenticationDetails [/b]WebDetail = (WebAuthenticationDetails) SecurityContextHolder
    .getContext().getAuthentication().getDetails();
    logger.debug("IpAddress" + WebDetail.getRemoteAddress());
    String webIp = WebDetail.getRemoteAddress();
    String hostAddress = "";
    try {
    InetAddress localhost = InetAddress.getLocalHost();
    hostAddress = localhost.getHostAddress();
    } catch (Exception e) {
    System.err.println(e.getMessage());
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制