我了解Spring SecurityHttpSessionSecurityContextRepository
使用.HttpSession
此外,我读过 CloudFoundry 等 PaaS 出于可扩展性的目的而尝试避免会话复制。
我打算将应用程序部署到CloudFoundry PaaS。
HttpSessionSecurityContextRepository
在CF上使用有问题吗?
我了解Spring SecurityHttpSessionSecurityContextRepository
使用.HttpSession
此外,我读过 CloudFoundry 等 PaaS 出于可扩展性的目的而尝试避免会话复制。
我打算将应用程序部署到CloudFoundry PaaS。
HttpSessionSecurityContextRepository
在CF上使用有问题吗?
CloudFoundry 文档只是说 HTTP 会话默认情况下不会跨实例复制。这意味着部署在多个实例上的应用程序将无法默认使用任何类型的 HTTP 会话集群。HTTP 会话变得粘性,即同一会话中的所有 HTTP 请求都将被路由到该请求的会话所在的实例。如果实例失败,在该实例上具有活动会话的用户将被迁移到其他实例,但他们将丢失会话信息,这意味着他们将不得不再次登录。
这并不意味着在这样的环境中使用 Spring Security 是不安全的。Spring Security 的语义将与没有它的语义相同。用户登录后,他们将继续访问创建会话的 CloudFoundry 实例。如果该实例崩溃,它们将自动移植到另一个实例,但必须再次登录。
如果默认设置(没有会话复制)是一个问题,当然可以跨实例共享会话。CloudFoundry 论坛列出了实现此目的的两种方法——通过 Redis和使用 JDBC。也可以使用 CloudFoundry 服务之一来实现您自己的解决方案。