【发布时间】:2016-11-19 16:16:17
【问题描述】:
我正在开发一个 webapp,纯粹基于 JS 和 Rest WS。部署在 Weblogic 上。 使用 FORM Auth 登录和 Session Invalidate 注销。
对于会话超时,我有两个逻辑
1) web.xml 会话超时配置
2) JS 计时器,用于检查单击或按键事件,否则调用 Logout servlet,参数为 sessiontimeout
现在的问题是,假设用户通过访问 JS 文件在客户端处于活动状态,但没有进行任何 REST WS 调用,我无法向 USER 显示任何通知,因为 SESSION 已超时。这是因为逻辑 1,它不允许我配置任何方式来指定重定向哪个页面或传递任何请求参数。
逻辑 2 工作正常,当客户端处于非活动状态 30 分钟时,它会使用来自客户端的请求参数调用 Logout?sessionTimeout=true servlet,这解决了我的问题。但是这种情况非常罕见,例如 100 例中有 10 例,是逻辑 1 的 90 倍。
我能想到的唯一解决方案是删除 web.xml 会话配置,只需检查 JS 会话计时器并在 TRUE 时使其无效。但这是正确的方法/设计吗?
请专家分享您的想法。
【问题讨论】:
-
将两者与定期 ajax 请求结合起来检查会话。你不想让浏览器单独管理这个
标签: javascript java session jakarta-ee httpsession