这可能是基于意见的,但我仍然怀疑是否有最佳实践,因为我对 websocket 做法几乎一无所知

我有一个从我自己的 OP 获取JWT令牌的SPA . 然后它使用该JWT连接到我使用REST和WebSockets的其他服务 .

就REST来说,它非常简单:

  • REST API验证JWT(在 Authorization: Bearer ... 中发送)并提供对受保护资源的访问或使用 401 进行响应,让SPA知道它需要请求新令牌 .

现在有websockets:

在加载SPA期间,一旦我获得了令牌,我就打开了一个WS到我的web服务 . 我发送的第一条消息是 login_message 和我的JWT,然后我继续在服务器's websocket instance to know who'发送消息 . 我收到的每个后续消息,我都会验证JWT是否已过期 .

据我所知,一旦它到期,我面临两个选择:

  • 删除某个类型的 token_expired 错误的websocket,并在令牌刷新后强制浏览器 Build 新的websocket连接 .

  • 保持websocket打开,返回错误消息并发送新的登录消息(刷新令牌后)

  • 不要使用登录消息,只需在每个请求中发送JWT .

Question :您会推荐哪种方法?为什么?在安全性和性能方面 . 我没有列出其他常见做法吗?