我开始使用一个nginx,两个tomcats和一个redis服务器成功使用spring会话来实现集群会话,并且出现了一些问题。 首先,当我谈论不同的应用程序时,我的意思是两个完全的应用程序,我不谈论同一个应用程序的两个实例。
我是否可以使用两个或更多不同的spring-session应用程序来存储只有一个redis服务器的会话?
这些应用程序可以在不同的tomcats实例中运行吗?
Spring会话如何避免使用一台redis服务器在不同应用程序之间发生会话ID冲突?
是否需要附加后缀或前缀ID以避免此问题?
答案 0 :(得分:3)
Spring Session目前不支持范围界定会话。有关跟踪此问题的详细信息,请参阅gh-166。
Spring Session会为会话ID生成一个具有高级别熵的安全随机ID,因此您获得冲突的可能性极低。
这意味着只要您可以使用以下语句,就可以使用Spring Session将相同的Redis实例用于多个应用程序:
恶意用户可以将应用程序A的会话ID与应用程序B一起使用。为什么这很重要?请考虑以下情形:
这对您来说可能不是问题。例如,良好的安全性实践将确保通过在应用程序B中查找ADMIN角色来正确授权用户。应用程序A不会填充该角色,因此在用户使用应用程序B进行身份验证时,他们无权使用它。 / p>