当用户会话超时时,Liferay会生成一些事件或操作。我希望在会话超时后执行一些操作(刷新页面)(不要自动续订会话,我知道这一点)。 问题是我们已经删除了会话超时的警告。因此,用户实际上并不知道他的会话超时。因此,如果他执行某些操作(更改他的个人资料图片),那么;他对Guest用户进行了更改(当会话超时时,它会更改Guest用户的图像)。
答案 0 :(得分:0)
如果允许访客用户更改系统上的数据,则基础架构中存在问题,应该实施适当的权限检查。我假设你不是在谈论Liferay的默认UI,它应该已经进行了适当的检查。
就我而言,这会给你带来99.99%的你想要的方式:当会话超时时实现页面更改对用户不友好 - 因为他们可能只是在编辑数据的过程中,当他们在提交之前被指示远离那半满的形式。
从用户体验的角度来看,您可能希望重新激活会话超时。
您面临的另一个问题是浏览器和服务器都会在会话中倒计时,并且无法保证它们完全同步。假设浏览器在服务器超时之前1秒重定向到新页面:这将有效地扩展会话(而任何用户输入都会在没有警告的情况下丢失)。这是双输的。转过来并为浏览器的倒计时添加一个安全分钟,你可能会遇到相反的情况:用户希望仍然登录,提交。如果您仍然具有与之相关的错误实现,那么您将再次以访客用户身份更改数据。另一个双输。
比较重新启动倒计时,然后在警告后明确注销:用户预先警告,可以扩展会话,不会丢失数据,并且 - 如果他们不扩展 - 服务器上的会话内存将被释放时间。双赢双赢。
可能不是你所期望的答案,但恕我直言,这是解决这个问题的唯一办法。