我有2个从负载均衡器运行的Notes服务器。数据库使用目录服务对LDAP进行身份验证。
我有java代码检查LDAP以检查用户的密码是否过期。如果密码已过期,则代码将重定向到密码更改屏幕。此代码在before page load事件中运行。由于所有页面都不是公共访问,因此Notes生成的登录会在发生任何事情之前发生。
密码更改屏幕首先绑定以在LDAP中验证用户,然后更改密码。但是如果我在初始Note登录后立即更改密码,那么我会收到身份验证错误。
如果我将密码更改回同样的东西,那么我没有得到身份验证错误,那么一切正常。
所以我怀疑java代码运行了两次。备注日志应该只运行一次。但是当我们的LDAP团队打开日志记录时,他们可以看到密码属性被更改两次(当我更改为相同的密码时)。因此,失败的原因是,密码已成功更改,但是第二次代码运行时,它使用的是“旧”密码,而且这个错误已经返回给浏览器。
现在这里真的很奇怪。如果我进行了Notes身份验证,那么在密码更改前等待一整分钟,代码只运行一次。
或者如果我去其中一个服务器,代码只运行一次。
只有在我通过负载均衡器或者在登录后立即尝试更改密码时,代码才会运行两次。
知道这里究竟会发生什么吗?
更新:问题似乎来自我们的反向代理服务器。我们的网站配置方式是Browser-> Reverve Proxy-> Load Balancer->(Notes Server 1,Notes Server 2)。 如果我转到Load Balancer,那么代码只运行一次。
虽然我可能没有看到记录在notes.nsf中,但是当我直接看到控制台时,我可以看到它运行了两次。
更新:反向代理正在Apache上运行。不确定版本。
答案 0 :(得分:0)
当我按下提交时,我之前的密码更改页面刷新了整个页面。由于某种原因,这导致页面被提交两次。我把事情改成了部分刷新,现在一切运作良好。不知道为什么刷新不喜欢完全刷新。但它现在有效。 :)