现在的场景是,用户通过登录页面输入账户、密码完成登录操作后,进入到的页面内,包含着两个不同子系统的入口。理想情况下,通过刚才的登录操作,客户的基本信息已被服务器保存到session中,并传给客户端一个sessionID。用户凭借着这个session ID在子系统A和子系统B中进行操作。
但实际情况是,由于子系统A和子系统B分别部署在不同的机器上,也就具备着两个不同的ip地址,导致用户进入子系统B后被服务器识别为新的客户端,因此服务器返回一个新的sessionID,原有的sessionID被覆盖。当用户再想从子系统B切换到子系统A中时,由于原有的sessionID被覆盖,也就因此失效。导致用户不能在子系统A中正常操作,实际情况中产生被迫登出的效果。
因此,当前寻求一个解决办法,能使同一用户在主登录页面一次登录后,将获取的session ID同时传递给不同IP的两个系统中。即当用户登录后进入子系统B时,服务器识别出为新的客户端,但当检测出该用户已被分配一个sessionID后,不再分配新的sessionID,而是把旧的session ID分配回去,达到跨IP共享同一个sessionID的效果。
我觉得,可以在两个应用前面有一个nginx,配置session保持会话稍微简单一点