workman服务端开发模式-应用开发-gateway的onWebSocketConnect开发

news/2024/12/18 18:51:31/

一、onWebSocketConnect安全开发一

        为什么叫安全开发一,是因为还有两种情况没有考虑好,需要实测中进行修改。第一种情况:个人如果打开两个窗口,访问同一个系统或个人如果打开两种浏览器,两个窗口同时访问一个系统,改怎么解决。第二种情况:如果有人用工具的情况下,怎么才能断开连接。安全一的代码如下:

    /*** 专门处理安全的* User: 龙哥·三年风水* Date: 2024/12/16* Time: 17:03* @ param $client_id* @ param $data*/public static function onWebSocketConnect($client_id,$data){// 没有指定参数的情况下if(!isset($data['get']['token']) || !isset($data['get']['extremity_type']) || !isset($data['get']['login_time'])){//释放当前连接Gateway::destoryClient($client_id);exit;}$token = $data['get']['token'];$extremityType = $data['get']['extremity_type'];$loginTime = $data['get']['login_time'];// 有参数且参数值不合法的情况下if(empty($token) || !in_array($extremityType,[1,2,3]) || preg_match('/^\d{10}$/', $loginTime) == false){//释放当前连接Gateway::destoryClient($client_id);exit;}// 读取Redis配置及Redis连接$config = parse_ini_file('conf.ini', true);$redis = new Client("redis://{$config['redis']['host']}:{$config['redis']['port']}");$redis->auth($config['redis']['password']);// 平台端验证if($extremityType == 1){$redis->select((int)$config['redis']['login_ip']);// 验证IP是否合法$redis->get($token,function($clientIp) use ($client_id,$data){if(empty($clientIp)){//释放当前连接Gateway::destoryClient($client_id);exit;}if($clientIp != $data['server']['HTTP_X_REAL_IP']){//释放当前连接Gateway::destoryClient($client_id);exit;}});// 验证是否登录$redis->select((int)$config['redis']['token_platform']);$authorization = sha1(sha1($token).$loginTime);$redis->get('token_'.$authorization,function ($tokenValue) use ($client_id,$config){if(empty($tokenValue)){//释放当前连接Gateway::destoryClient($client_id);exit;}Gateway::bindUid($client_id,$tokenValue);Gateway::joinGroup($client_id,'platform'.$config['redis']['token_platform']);});}}

二、提前说明

        明天将完成流程图及规则说明后再次开发websocket安全。


http://www.ppmy.cn/news/1556181.html

相关文章

gpu硬件架构

1.简介 NVIDIA在视觉计算和人工智能(AI)领域处于领先地位;其旗舰GPU已成为解决包括高性能计算和人工智能在内的各个领域复杂计算挑战所不可或缺的。虽然它们的规格经常被讨论,但很难掌握各种组件的清晰完整的图景。 这些GPU的高性…

多线程----互斥

以下是关于多线程中互斥相关的详细知识点介绍以及C语言代码示例: 一、互斥的概念与重要性 在多线程编程中,多个线程可能会同时访问和操作共享资源(如全局变量、共享的数据结构等)。如果没有适当的控制机制,就可能导致…

Java 系统稳定性进阶之路:策略、实践与优化

前言 最近在做系统的稳定性治理,有一点心得和感悟,分享、记录和输出一下,走几步要回头看看,沉淀一下。 稳定性建设-八股文 H-热点(Hotkey)R-限流(RateLimiter)A-授权(Authorize)B-隔离(BulkHead)C-熔断(CircuitBreaker)(服务熔…

RK3588平台上YOLOv8模型转换与CentOS 7.8 Docker镜像拉取超时问题解决指南

RK3588平台上YOLOv8模型转换与CentOS 7.8 Docker镜像拉取超时问题解决指南 一、RK3588平台上YOLOv8模型从PT转换为RKNN 背景介绍 YOLOv8的原生模型包含了后处理步骤,其中一些形状超出了RK3588的矩阵计算限制,因此需要对输出层进行一些裁剪。本文将详细…

SpringCloud--SpringCloudAlibaba 对应的版本选择

SpringCloud--SpringCloudAlibaba 对应的版本选择 1、进入官网查看 输入Spring Cloud Alibaba官网_基于Springboot的微服务教程-阿里云 网址,选择文档->点击版本(2023.x) ​ 2、选择版本发布说明,可以看到Spring Cloud Ali…

禁用硬件合成 (Hardware Composer, HWC)

要禁用硬件合成 (Hardware Composer, HWC),通常需要根据具体的设备平台和系统环境选择适合的方法。以下是通用的解决方案: 1. 修改系统属性 在 Android 系统中,可以通过设置系统属性来禁用 HWC 合成: a. 使用 setprop 命令临时禁…

3.2.1.2 汇编版 原子操作 CAS

基本原理说明 在 x86 和 ARM 架构上,原子操作通常利用硬件提供的原子指令来实现,比如 LOCK 前缀(x86)或 LDREX/STREX(ARM)。以下是一些关键的原子操作(例如原子递增和比较交换)的汇…

云计算HCIP-OpenStack03

书接上回: 云计算HCIP-OpenStack02-CSDN博客 10.KeyStone keystone-Openstack,IAM服务(统一身份认证)-云服务 建议先去了解Hadoop(大数据生态系统)中的kerberos(LDAPkerberos的鉴权机制&#xf…