我正在开发一个 vaadin 7 应用程序,使用 jaas 进行用户身份验证和授权,并在应用程序服务器(glassfish)中定义领域。
我有这样的要求:
我无法同时满足这两个要求。
如果我将http会话超时设置为一分钟,则关闭浏览器后一分钟就会释放资源,但下次用户不会进行身份验证。
如果我将 https 会话超时设置为几天,用户将在此时通过身份验证,但 vaadin 会话在 3 次错过心跳后不会立即关闭。仅当用户下次使用相同的 http 会话使用该应用程序时,它才会关闭。
如何才能同时满足这两个要求呢?
这里是我正在使用的技术的更多信息:
- 玻璃鱼4
- 网络应用程序 3.1
- 瓦丁7.1.7
- vaadin-cdi 1.0-快照
谢谢你的帮助
您可能想看看春季安全 http://docs.spring.io/autorepo/docs/spring-security/3.2.x/reference/htmlsingle/尤其是记住我身份验证 http://docs.spring.io/autorepo/docs/spring-security/3.2.x/reference/htmlsingle/#remember-me- 我个人会使用的替代方案,而不是尝试自己实现安全的持久登录。
如果你想走DIY之路:
我认为尝试将 Vaadin 与 Http Session 分开并不是一个好主意。这Vaadin 书中的应用程序生命周期部分 https://vaadin.com/book/vaadin7/-/page/application.lifecycle.html says:
当新客户端连接时,它会创建一个新的用户会话,由 VaadinSession 的实例表示。使用浏览器中存储的 cookie 来跟踪会话。 … [Vaadin Session] 还通过 WrappedSession 提供对较低级别会话对象 HttpSession 和 PortletSession 的访问。
也许您可以更改第一个要求的解决方案(“用户可以保持登录状态一段时间,这样他就不需要每次都输入密码。”)通过将登录凭据与 http 会话分离?
您可以将一些带有时间戳和唯一ID的内容存储为cookie(带有过期日期)并且定制VaadinServlet https://vaadin.com/book/vaadin7/-/page/application.lifecycle.html#application.lifecycle.servlet-service与你自己的SessionInitListener
and SessionDestroyListener
检查(并设置)它,并且需要登录凭据或接受来自客户端的凭据,具体取决于您在服务器上执行的检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)