AcegiSecurity学习记录(一)

6 篇文章 0 订阅
6 篇文章 0 订阅

  org.acegisecurity.context.HttpSessionContextIntegrationFilter

  使用从 HttpSession中取出的信息组装SecurityContextHolder对象。SecurityContextHolder负责与当前执行线程提供的SecurityContext对象结合。SecurityContext定义了与当前执行线程关联的最小的安全信息。HttpSession将被问询以取出在请求期间将被保存在SecurityContextHolder中的SecurityContext对象。当请求处理结束,所有的对SecurityContextHolder的更新将被存回HttpSession中。


    如果从HttpSession中无法得到一个正确的SecurityContext对象,那么一个新的SecurityContext对象将被创建。被创建的对象将是setContext(Class)方法设定的类的一个实例。默认创建的对象将是SecurityContextImpl。


    如果HttpSession并不存在,那么HttpSession不会被创建。除非当前的SecurityContextHolder持有的对象不是由setContext(Class)方法指定的新实例。这样做避免了不必要的HttpSession的创建,却可以自动保存SecurityContextHolder的改变。这个规则有一个例外,即如果forceEagerSessionCreation属性为true,那么HttpSession间总是被创建而忽视最小化会话的逻辑。由于这样做会大量消耗资源,因此不被推荐。


    对每个请求此过滤器仅执行一次。如果无论何时以何种理由,都不需要创建HttpSession,那么setAllowSessionCreation属性应设定为false。只有你确定需要保证服务器端内存,且所还有的使用SecurityContextHolder的类不需要在两次请求间维持SecurityContext时才能这样做。记住,如果forceEagerSessionCreation为true,则allowSessionCreation也必须为true。否则,将在启动时报错。
此过滤器必须在所有的认证处理机制前执行。认证处理机制在执行时需要SecurityContextHolder包含一个正确的SecurityContext对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值