【笔记】WebSocket传递Token
前言
WebSocket传递Token
方式一
前端
- 通过GET请求参数传递token
1 | const ws = new WebSocket(`ws://127.0.0.1:8080/?token=${token}`); |
后端
- 从请求参数中获取token并鉴权
1 | var token string = context.Query("token") |
方式二
前端
- 通过WebSocket管道内传输token
1 | const ws = new WebSocket(`ws://127.0.0.1:8080/`); |
后端
- 无条件允许前端建立WebSocket连接,建立连接后再自定义鉴权判断逻辑
- 在建立连接后标记为未鉴权,当后端需要发送数据给前端时,只给已鉴权的连接发送数据,未鉴权的连接提示需要鉴权,前端可以主动发送token给后端鉴权
方案三
前端
- 利用WebSocket请求头中的
Sec-WebSocket-Protocol参数传递token
1 | const ws = new WebSocket('ws://127.0.0.1:8080/', ["<token>"]); |
后端
- 在接收到前端的请求时,从请求头中获取
Sec-WebSocket-Protocol作为token鉴权 - 鉴权通过后,在升级为WebSocket连接时,将
Sec-WebSocket-Protocol作为响应头返回
1 | var token string = context.Request.Header.Get("Sec-Websocket-Protocol") |