对于使用默认threadlocalsecuritycontextholderstrategy保存 Authentication
将对象放入 ThreadLocal
变量,当spring security无法清除 ThreadLocal
在请求完成之前?
securitycontextpersistencefilter执行以下操作:
荷载 Authentication
(来自 HttpSession
通过httpsessionsecuritycontextrepository)到上下文( SecurityContextHolder
).
通过应用程序调用筛选器链以继续执行请求。 Authentication
被清除 SecurityContextHolder
因此,后续请求使用相同的 ThreadLocal
没有无效数据。
简言之,是否有任何情况下#3会因为应用程序问题、超时或其他原因而无法完成?如果是,应用程序应如何确保适当的 Authentication
当前请求的详细信息(例如,确保数据对当前请求/用户有效)?
1条答案
按热度按时间falq053o1#
既然您链接到了源代码,那么请看一下
SecurityContextPersistenceFilter
:如您所见,上下文是在
try
块,并在finally
块,因此在请求处理完成后不可能仍然设置上下文。