gpt4 book ai didi

javascript - 需要有关 HTTPSession 超时的帮助

转载 作者:行者123 更新时间:2023-12-02 03:28:37 25 4
gpt4 key购买 nike

我正在开发一个网络应用程序,纯粹基于 JS 和 Rest WS。部署在Weblogic上。使用 FORM Auth 进行登录,使用 Session Invalidate 进行注销。

对于 session 超时,我有两个逻辑

1)web.xml session 超时配置

2) JS 计时器,用于检查单击或按键事件,否则调用 Logout servlet,参数为 sessiontimeout

现在的问题是,假设用户通过访问 JS 文件在客户端处于 Activity 状态,但没有进行任何 REST WS 调用,由于 session 超时,我无法向用户显示任何通知。这是因为逻辑 1,它不允许我配置任何方式来指定要重定向的页面或传递任何请求参数。

逻辑2工作正常,当客户端处于非 Activity 状态30分钟时,它会使用来自客户端的请求参数调用 Logout?sessionTimeout=true servlet,这解决了我的问题。但这种情况发生的情况非常罕见,比如 100 例中有 10 例,是逻辑 1 的 90 倍。

我能想到的唯一解决方案是删除 web.xml session 配置,然后让 JS session 计时器检查并在 TRUE 时使其无效。但这是正确的方法/设计吗?

请专家分享您的想法。

最佳答案

您希望在服务器上维护大部分超时逻辑(不太可能被修改/黑客攻击)并创建一个可以从客户端调用的服务,该服务定期询问服务器它拥有的 session 是否是仍然有效。

最佳实践是在 session 开始时为用户生成 token 并在第一个响应中传递该 token ;可能会将其保存在 cookie 中。 token 的身份和过期时间由服务器维护。

客户端会通过从 cookie 中读取 token ID 并在 AJAX 调用中将其传递到服务器来检查 session 是否过期,例如每 30 秒检查一次。然后,服务器会响应该 token 是否有效。当客户端从服务器收到无效响应时,它会将用户导航到登录页面。

在服务器端,如果您收到页面请求,并且传递的 cookie 包含无法识别或过期的 token ,则只需将用户重定向到登录页面即可。

在服务器上维护大部分超时逻辑的另一个优点是,如果客户端在关闭 JavaScript 的情况下进行浏览,您的 session 超时逻辑仍然可以正常工作。

关于javascript - 需要有关 HTTPSession 超时的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38413288/

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