这是我的一位前辈问我的问题。
1)我们有一个 J2EE 应用服务器的两个不同节点:节点 1 和节点 2。(如下图所示。)
2)也启用了休眠二级缓存。
3) 问题如下:用户点击登录页面 URL 并假设此请求到达节点 1 并且用户登录然后用户注销。
4) 再次用户请求登录页面,这一次,请求转到节点 2。现在用户登录并更改他的密码并注销。
现在的问题是当用户尝试使用他的新密码登录并且请求转到节点 1 时。他能够登录系统吗?
如果他不能这样做,可以做些什么来让用户在节点 1 上使用他的新密码登录。
Note: We have a LoginUser table where the Username and passwords are stored.
我的答案 :
根据我的观点,当用户尝试使用节点 1 登录然后注销时,可能会出现这种情况。
Hibernate 触发这个查询:
select * from Login where username = "John";
并且这个条目被缓存在节点1的二级缓存中。
现在,当他使用节点 2 登录系统并更改密码时。再次尝试登录节点1,他无法使用新密码登录,因为这次节点1的二级缓存包含旧密码,所以他可以使用旧密码登录。
这就是他无法使用新密码登录节点 1 的原因。
现在解决这个问题的方法可能是二级缓存的复制。
请分享您对同一问题的意见。