gpt4 book ai didi

java - 如何关闭 vaadin session 但在浏览器关闭时保持 http session ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:34 24 4
gpt4 key购买 nike

我正在开发一个具有用户身份验证和授权的 vaadin 7 应用程序,使用 jaas 以及在应用程序服务器 (glassfish) 中定义的领域。

我有这样的要求:

  • 用户可以在一段时间内保持登录状态,这样他就不需要每次都输入密码。
    我通过设置 http session 的 session 超时来实现这一点。

  • vaadin session 可以锁定一些资源,并且在锁定期间,没有其他 session 可以使用该资源。当 vaadin session 关闭时,所有锁定的资源都会被释放。
    我将心跳间隔设置为仅 15 秒。

我无法同时满足这两个要求。如果我设置http session timeout为一分钟,关闭浏览器一分钟后资源被释放,但是下一次用户认证不了。
如果我将 https session 超时设置为某些天,则此时​​用户已通过身份验证,但 vaadin session 在 3 次心跳丢失后不会立即关闭。只有当用户下次使用相同的 http session 使用该应用程序时,它才会关闭。

如何实现这两个要求?

这里是我正在使用的技术的更多信息:

  • 玻璃鱼 4
  • 网络应用 3.1
  • vaadin 7.1.7
  • vaadin-cdi 1.0-快照

感谢您的帮助

最佳答案

您可能想看看 st Spring Security特别是Remember-Me Authentication - 我个人会使用的替代方案,而不是自己尝试实现安全持久登录。

如果您想走 DIY 之路:

我认为尝试将 Vaadin 与 Http Session 分开并不是一个好主意。 Application lifecycle section of the Vaadin book说:

When a new client connects, it creates a new user session, represented by an instance of VaadinSession. Sessions are tracked using cookies stored in the browser. … [The Vaadin Session] also provides access to the lower-level session objects, HttpSession and PortletSession, through a WrappedSession.

也许您可以将第一个要求(“用户可以保持登录一段时间,这样他就不需要每次都输入密码。”)的解决方案更改为将登录凭据与 http session 分开?

您可以将一些带时间戳和唯一 ID 存储为 cookie(带有过期日期)和 customize the VaadinServlet使用您自己的 SessionInitListenerSessionDestroyListener 来检查它(并设置它)并根据您在服务器。

关于java - 如何关闭 vaadin session 但在浏览器关闭时保持 http session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19426453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com