这可能是基于意见的,但我仍然怀疑是否有最佳实践,因为我对 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 :您会推荐哪种方法?为什么?在安全性和性能方面 . 我没有列出其他常见做法吗?