Xia*_* Li 3 spring spring-security
据我所知,Spring Security使用过滤器,以获得SecurityContext从HttpSession,将其存储到一个ThreadLocal变量.处理完请求后,过滤器将SecurityContext后退保存到HttpSession.我的问题是为什么Spring Security不SecurityContext直接使用?为什么要保存Threadlocal并HttpSession再次保存?
春季安全有一个可配置的策略存储SecurityContext在SecurityContextHolder.ThreadLocal变量只是一种策略.以下是3种策略.
在,方面ThreadLocalSecurityContextHolderStrategy,
我的问题是Spring Security只是直接使用SecurityContext吗?
因为Web/Application Server的工作方式在多个供应商(Tomcat,JBOSS)之间并不相同.Spring Security不能100%确定1个线程将仅用于满足一个用户会话.A Thread可能在涉及线程池时主要共享.因此SecurityContext,将ThreadLocal变量存储在变量中并不会使其表现得像HttpSession.
为什么要保存到Threadlocal并再次保存回HttpSession?
如上所述,Same Thread可用于处理来自不同用户的多个请求.因此,在请求结束时,SecurityContext必须从ThreadLocal变量中腾出空间,以便下一个请求可以使用它.完成后的存储HttpSession是为了在SecurityContext来自同一会话的下一个请求进入时创建后退.
| 归档时间: |
|
| 查看次数: |
1348 次 |
| 最近记录: |