gpt4 book ai didi

java - Websocket:页面重新加载后维护用户 session

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

我有一个简单的单页应用程序,使用 jetty websockets 在服务器和客户端之间进行通信。

问题:每次重新加载页面时,我的 websocket 连接都会被禁用并初始化新的连接。问题是用户应该在每次页面刷新时重新登录。

问题: 如何消除页面刷新时重新登录的需要?

已编辑:面临下一个问题:如何决定何时删除 session ?我在服务器端有一个对等对象,它只是 websocket session 容器。 Peer 在 onClose 方法上被删除,该方法又在删除客户端 Websocket 时被调用。问题来了:当用户按 F5 -> 客户端 websocket 损坏 -> 服务器删除适当的 websocket -> 客户端尝试重新加载页面并检查是否有任何 session ,但什么也没找到。另一方面,我根本无法停止删除 y 对等点( session )。

问题:我如何告诉服务器何时删除我的对等点?

最佳答案

为了消除在每次建立新连接时验证 WebSocket 连接的需要,您可以使用 cookie。

首次验证 WebSocket 连接,在 WebSocket 连接上设置 cookie,并在新连接时重新检查 cookie。

这需要一个允许在 WebSocket 连接上读取和设置 cookie 的 WebSocket 服务器。

如果 WebSocket 连接与包含打开 WebSocket 连接的 JavaScript 的 HTML 页面来自同一源,您还可以使用基于“正常”HTML 表单的登录加 cookie 过程:

  1. 用户打开“login.html”,其中包含用于登录的 HTML 表单
  2. 用户输入用户名/密码,这会通过 HTTP/POST 将 HTML 表单提交到某个 URL
  3. 服务器检查凭据,成功后生成随机 cookie,存储 cookie,并在从 HTTP/POST 返回的 HTML 页面上设置 cookie
  4. 后一个返回的页面随后打开与服务器的 WebSocket 连接(该连接位于同一源,因此设置了先前设置的 cookie)
  5. WebSocket 服务器在打开握手时检查是否有 cookie,以及 cookie 是否存储在登录用户的数据库中
  6. 如果是,则 WebSocket 连接成功。如果没有,WebSocket 服务器不会建立连接,而是将用户重定向到 1。

关于java - Websocket:页面重新加载后维护用户 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21675247/

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