YeHuang_1987 2009-04-27 21:55
浏览 522
已采纳

acegi SecurityContextHolder.getContext()

在jsp页面里,Object obj =SecurityContextHolder.getContext().getAuthentication();
obj值是null。
但是我的认证已经成功的,if (event instanceof AuthenticationSuccessEvent)的值是true。
并且在我的一个自定义的监听器响事件记录用户登录日志的LoginSuccessListener,代码如下:
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 + "]成功登录日志...");
Object obj = SecurityContextHolder.getContext().getAuthentication();
if (null != obj){
System.out.println("模拟记录用户[" + userName + "]成功登录日志...");
}
else
System.out.println("模拟记录用户[" + userName + "]登录日志失败...");
}
}
}

经测试,其中obj的值是不空的。
[b]问题补充:[/b]
我的applicationContext-acegi-security.xml已经有了HttpSessionContextIntegrationFilter

代码如下:
<!-- ========================= 过滤器链 ========================= -->
class="org.acegisecurity.util.FilterChainProxy">

<![CDATA[
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=HttpSessionContextIntegrationFilter,authenticationProcessingFilter,filterInvocationInterceptor
]]>

<!--  ②通过HttpSession转存SecurityContext的过滤器 -->
<bean id="HttpSessionContextIntegrationFilter"
    class="org.acegisecurity.context.HttpSessionContextIntegrationFilter" />
  • 写回答

1条回答 默认 最新

  • wanghaolovezlq 2009-04-27 23:10
    关注

    http://wiki.springside.org.cn/display/springside/Chapter+2.+Technical+Overview
    你现看看这个文章
    HttpSessionContextIntegrationFilter在HTTP之间存储SecurityContext
    加上HttpSessionContextIntegrationFilter这个就行啦,在Filter链条上

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

报告相同问题?

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥20 sim800c模块 at指令及平台
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计