use*_*733 3 spring spring-security
我不明白一件事。例如,如果 5 个用户登录您的应用程序,那么 spring security 创建 5 个不同的上下文?我对春天的背景有点困惑。
spring中的所有组件都是单例的(默认情况下)。那么,如果我创建一个组件,并且两个不同的经过身份验证的用户正在处理该组件,那么他们正在处理相同的数据?
SecurityContextSecurityContextHolder默认情况下与线程局部策略保持一致。这意味着SecurityContext它将被限制在一个线程内。
在 Spring MVC 应用程序中,每个请求都在其自己的线程中运行。Spring Security(SecurityContextPersistenceFilter特别是)用 HTTP 会话中找到的SecurityContextHolder内容填充SecurityContext(如果已经存在)。
因此,如果有五个用户登录您的应用程序,则将存在五个安全上下文,但处理请求的线程只能使用属于发出请求的用户的安全上下文。
对于问题的第二部分,是的,多个用户将使用单例作用域 bean 的相同实例。但我不确定这是一个问题。您的单例 bean 可能是服务、DAO 等,并且您可能不会在用户可以直接更改的那些上存储状态。
希望这篇简短而简化的文章能够解释它,如果没有发表评论,我将添加更多详细信息。
更多信息:
| 归档时间: |
|
| 查看次数: |
2430 次 |
| 最近记录: |