我不明白一件事。例如,如果有5个用户登录到您的应用程序,那么spring security将创建5个不同的上下文?我对春季的情况不太困惑。
spring中的所有组件均为Singleton(默认情况下)。那么,如果我创建一个组件,并且两个不同的经过身份验证的用户正在使用此组件,那么他们正在使用相同的数据?
SecurityContext
SecurityContextHolder
默认情况下保留在线程本地策略中。这意味着SecurityContext
将范围限定为线程。
在Spring MVC应用程序中,每个请求都在其自己的线程中运行。Spring Security(SecurityContextPersistenceFilter
特别是)填充在HTTP会话中找到的SecurityContextHolder
with SecurityContext
(如果已经存在)。
因此,如果在您的应用程序中登录了五个用户,则将存在五个安全上下文,但是处理请求的线程中只有一个属于发出请求的用户。
对于问题的第二部分,是的,多个用户将使用您的Singleton作用域Bean的相同实例。但是我不确定这是一个问题。您的单例bean可能是服务,DAO等,并且您可能不会在用户可以直接更改的状态上存储状态。
希望这篇简短而又简化的文章能解释它,如果不发表评论,我会添加更多细节。
更多信息:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句