【问题标题】:Vaadin - Hide UI when session expiresVaadin - 会话到期时隐藏 UI
【发布时间】:2013-10-16 07:07:02
【问题描述】:

我正在 Vaadin 7 中做一个项目。当用户会话到期时,我需要隐藏我的 UI(或禁用对 UI 的访问)。

我尝试覆盖

@Override
public void close() {
// some stuff to disable UI
}

但是,什么都没有发生。会话过期后是否可以禁用我的 UI 中的组件。

或在会话到期后隐藏我的 UI 的任何其他想法。

【问题讨论】:

  • “会话过期”是什么意思?如果你的意思是正常的 http 会话,那就太晚了,因为那时浏览器和关联实例之间的连接丢失了,所以你不能从服务器端更新它。我认为您必须决定如何在您的应用程序中关闭会话。让 http 会话过期会导致糟糕的用户体验,最好让会话保持打开状态,直到用户关闭它们。
  • 为什么要关闭 UI?你遇到了什么问题?
  • @enkara 当用户第二次登录时,我手动关闭了用户会话。我希望关闭 UI,因为 UI 包含一些机密数据。
  • @AndréSchild 你是对的。但是,vaadin 的人说当会话到期vaadin.com/forum#!/thread/139230 时,方法 close() 将被调用。所以,我试图覆盖它来做我的事情。
  • 不,在 close() 发生的那一刻,与浏览器的连接就完成了,所以你不能禁用 UI 组件。但是不要关闭会话,只需从屏幕上删除所有元素并显示一个简单的“您已被注销,因为......”消息。无需终止会话。

标签: session user-interface vaadin


【解决方案1】:

对于 Vaadin 7,您可以实现 DetachListener 并将其添加到 UI,如下所示:

最终 DetachListener detachListener = new DetachListener() { @Override 公共无效分离(最终分离事件分离事件){ //在会话关闭之前清理资源。 } }; ... ((YourUI) UI.getCurrent()).addDetachListener(detachListener);

【讨论】:

  • 注意:如果您重新加载页面,这也会执行(例如F5
猜你喜欢
  • 2021-09-13
  • 1970-01-01
  • 2014-11-19
  • 2015-11-26
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多