当前位置: 首页 > article >正文

websocket身份验证

websocket身份验证

前言

上一集我们就完成了websocket初始化的任务,那么我们完成这个内容之后就应该完成一个任务,当客户端与服务端连接成功之后,客户端应该主动发起一个身份认证的消息。

身份认证proto

我们看一眼proto文件的内容。

我们需要传输的内容有一个请求id,一个会话id。

这个会话id就是我们在dataCenter的loginSessionId

我们这里的请求id,我们不仅仅要在这个会话id是唯一的,我们还要在所有的会话都是唯一的。所以我们可以用UUID来实现这个功能。

UUID生成请求id

我们就要UUID生成的最后一段子串,初始位置是25,长度为12。

QString NetClient::makeRequestId()
{
    //确保请求id不重复
    //UUID
    return "R" + QUuid::createUuid().toString().sliced(25,12);
}

发送身份认证

我们先获取proto文件里的这个req,之后生成请求id,将dataCenter里面的loginSessionId放入我们的req当中,之后让我们的req经过序列化器的洗礼!

//发送身份认证
void NetClient::sendAuth()
{
    bite_im::ClientAuthenticationReq req;
    req.setRequestId(makeRequestId());//随机生成唯一的请求id
    req.setSessionId(dataCenter->getLoginSessionId());//会话id
    QByteArray body = req.serialize(&serializer);

    webSocketClient.sendBinaryMessage(body);

    LOG() << "[WS身份认证]requestId=" << req.requestId() << ", loginSessionId=" << req.sessionId();
}

这样就可以了!

测试

由于我们的dataCenter里面包含我们NetClient的实例,当我们创建dataCenter的实例的时候也会创建一个NetClient的实例。我们就加入下面代码即可!

    model::DataCenter* dataCenter = model::DataCenter::getInstance();
    dataCenter->ping();

我们就可以看到以下内容:

那么我们的网络通信就是可以跑通了,那么我们下一集开始就要回到主界面的内容啦!


http://www.kler.cn/a/399428.html

相关文章:

  • 【C语言】科技要闻。
  • PostgreSQL高可用Patroni安装(超详细)
  • 【分布式】万字图文解析——深入七大分布式事务解决方案
  • 【网络安全 | 漏洞挖掘】通过密码重置污染实现账户接管
  • 风电电力系统低碳调度论文阅读第一期
  • Flume 单机与集群部署详细教程
  • 网络技术-定义配置ACL规则的语法和命令
  • 学了Arcgis的水文分析——捕捉倾泻点,河流提取与河网分级,3D图层转要素失败的解决方法,测量学综合实习网站存着
  • htm + vue + quill 富文本编辑器案例
  • ubuntu连接orangepi-zero-2w桌面的几种方法
  • 【逐行注释】三维容积卡尔曼滤波(CKF)的MATLAB例程,附下载链接
  • 探秘Spring Boot中的@Conditional注解
  • 千帆启航,人才先行 | 讯方技术HarmonyOS人才训练营
  • 基于springboot家教管理系统源码和论文
  • 【linux】如何扩展磁盘容量(VMware虚拟机)-转载
  • SpringMVC学习笔记(一)
  • 23种设计模式的Flutter实现第一篇创建型模式(一)
  • 号卡分销系统,号卡系统,物联网卡系统源码安装教程
  • Tomcat 与 Servlet 的关系:传统与 Spring Boot 中的差异
  • 「人眼视觉不再是视频消费的唯一形式」丨智能编解码和 AI 视频生成专场回顾@RTE2024
  • Kafka 与 RabbitMQ 的联系
  • 基于YOLOv8深度学习的智慧城市管理井盖状态检测系统(PyQt5界面+数据集+训练代码)
  • Python 网络爬虫入门教程
  • 15分钟学 Go 实战项目五 :简单电子商务网站(3W字完整例子)
  • 足球青训俱乐部管理后台系统(程序+数据库+报告)
  • Spring Boot 2.x 和 Druid 多数据源整合 dm