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());
    }

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

报告相同问题?

悬赏问题

  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元