【发布时间】:2013-10-17 12:13:27
【问题描述】:
我正在开发一个 vaadin 7 应用程序,该应用程序使用 jaas 进行用户身份验证和授权,并在应用程序服务器 (glassfish) 中定义了一个领域。
我有这个要求:
用户可以保持登录状态一段时间,这样他就不需要每次都输入密码。
我通过设置 http 会话的会话超时来做到这一点。vaadin 会话可以锁定一些资源,并且在锁定时,没有其他会话可以使用该资源。当 vaadin 会话关闭时,所有锁定的资源都会被释放。
我将心跳间隔设置为仅 15 秒。
我无法同时满足这两个要求。
如果我将http会话超时设置为一分钟,则资源在关闭浏览器一分钟后释放,但用户下次不认证。
如果我将 https 会话超时设置为某些天,则这次用户已通过身份验证,但 vaadin 会话在 3 次错过心跳后不会立即关闭。只有当用户下次使用相同的 http session 使用应用程序时才会关闭它。
如何同时满足这两个要求?
这里有更多关于我正在使用的技术的信息:
- 玻璃鱼 4
- 网络应用 3.1
- vaadin 7.1.7
- vaadin-cdi 1.0-SNAPSHOT
感谢您的帮助
【问题讨论】:
-
你能澄清一下你必须释放什么样的锁定资源吗?或者您是指一般的资源?
-
在我的例子中,资源是数据库中的一些条目。我正在使用我自己的锁定机制。但真正的关键问题是如何在浏览器关闭后关闭 vaadin 会话而不使 http 会话无效。我现在的解决方法是只释放我锁定的数据库条目,但保留 vaadin 会话。我有一个计时器,每分钟检查一次是否仍然收到心跳。
标签: java session vaadin httpsession