对于SaaS应用程序,同一台服务器充当多个应用程序的主机。会话属性如何维护?要详细说明问题:
AppA和AppB托管在同一台计算机上,现在我为AppA创建UserA和为AppB创建UserB。 AppA和AppB属于不同的组织,因此它们没有链接。有关用户的一些详细信息存储在http会话级别(直到会话超时)。因此,现在如果我使用不同的选项卡从同一浏览器登录AppA和AppB,最终可能会在UserB / AppB屏幕上看到一些UserA / AppA详细信息,反之亦然。如何解决这个问题?
我可以想到的一种解决方案是创建像appa.example.org和appb.example.org这样的子域。还有其他/更好的方法吗?
最佳答案
通常,您不会在另一个应用程序中看到来自一个应用程序的详细信息。
创建会话后,将在Web应用程序内部创建该会话,并由密钥标识。此会话ID是存储在cookie中的内容,或通过其他方式传递的内容,以标识在下一个请求中引用哪个会话对象。
如果您将此会话ID提供给另一个Web应用程序,则将找不到该属性,因为它们位于另一个Web应用程序中。
现在,这是“正常情况”。实际上,可以在所有方向上进行配置,例如将所有属性存储在cookie中(在极端故障转移场景中非常有用),将会话存储在共享的memcached层或共享的数据库表中(然后您将在另一个对象中获得相同的对象)应用程序),等等。