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