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 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!
  • ¥15 怎样解决power bi 中设置管理聚合,详细信息表和详细信息列显示灰色,而不能选择相应的内容呢?