Websocket带token发起连接

今天碰到一个需要在连接websocket服务时提交token的业务场景,无奈websocket不支持同时提交header,翻阅官方文档时候发现了可以携带一个自定义协议,我们可以通过将token存放在自定义协议中达到提交token的目的。

根据文档,我们调整下代码:

//请务必注意,协议提交的是一个字符串数组类型。
var socket = new WebSocket('wss://url',['用户的token']);

 好,这样我们的前端改造就完成了,简单吧~。

接下来就是后端的取值了,先交代下我的后端技术框架,我使用的是SpingCloud 微服务架构,网关使用的是gateway。

/**
  * 链接创建
  *
  * @param session
  * @throws Exception
  */
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
     //这里就是我们所提交的token
     String submitedToken=session.getHandshakeHeaders().get("sec-websocket-protocol").get(0);

     //根据token取得登录用户信息(业务逻辑根据你自己的来处理)
}

 这样就取到了所提交的token值参数

另外,如果需要在第一次握手前的时候就取得token,只需要在header里面取得就可以啦

@Override
public boolean beforeHandshake(ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse, WebSocketHandler webSocketHandler, Map<String, Object> map) throws Exception {
        System.out.println("准备握手");
        String submitedToken = serverHttpRequest.getHeaders().get("sec-websocket-protocol")
        return true;
}

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
在Vue中,通过WebSocketToken的方法有多种。 首先,您可以通过在请求参数中携access_token=token来将Token传递给WebSocket请求。这可以在连接WebSocket时将Token作为参数传递给服务器。 其次,您可以在请求头中携authorization=Bearer token来建立连接。这将在Websocket请求的请求头中设置对应的Authorization字段,以便服务器进行身份验证。 另外,您还可以使用WebSocket的子协议来实现Token。通过在WebSocket请求中指定子协议,服务器可以根据子协议进行身份验证。 需要注意的是,在使用Vue的方式中,可能无法直接指定请求头的key来携authorization=Bearer token。这可能会导致无法通过Vue的方式直接传递Token进行连接。但是,您可以通过其他方式,如Postman等工具,来指定请求头进行连接。 综上所述,您可以在Vue中通过在请求参数、请求头或子协议中携Token来建立WebSocket连接。具体选择哪种方式取决于您的需求和服务器的要求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [oauth2关于websockettoken的探讨](https://blog.csdn.net/weixin_43277309/article/details/123129650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值