中移在线ChinaMobile系统单机和分布式应用的登录校验解决方案

 

单机的Tomcat应用登录校验:

  用户首次登录成功后,服务端会创建一个Session会话,客户端会生成一个sessionid,客户端会把sessionid保存到cookie里,每次请求都携带这个sessionid,服务端通过校验来判断是拦截还是放行

 

分布式应用中Session共享登录校验:

  真实的应用不可能单节点部署,尤其是像中移动,中电信这种较大型的项目,所以就有多个节点登录session共享的问题需要解决。tomcat支持session共享,但是有广播风暴;尤其用户量大的时候,占用资源非常严重

推荐使用Redis来存储token:

  服务端使用UUID生成随机64位或者128位token,放入redis中,然后返回给客户端并存储在cookie中,用户每次访问都携带此token,服务端去redis中校验是否有此用户即可

 

分布式应用登录校验解决方案Json Web Token

  Jwt是一个开放标准,他定义了一种用于简洁,自包含的用于通信双方之间以Json对象的形式安全传递信息的方法,可以使用HMAC算法或者RSA的公钥对其签名

简单来说,就是通过一定规范生成token,然后通过解密算法逆向解密,这样就可以获得用户信息

 

Json Web Token的封装通用方法,JwtTokenUtil

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 方法有创建token,判断token是否已过期,校验token等

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

新建一个拦截器类,实现HandlerInterceptor接口,注入Bean,UserService

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 在重写的preHandle方法里获取token并解密,如果解析不到,通过工具类反馈给客户端无权限的提示,如果token过期,提示“重新登录”

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 再新建Config类实现WebMvcConfigurer接口,注入拦截器bean,在addInterceptors里配置拦截路径,调用excludePathPatterns方法放行需要放行的资源

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 

新建LoginController,实现注册方法

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 然后实现Login方法和用来测试用的update方法

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

接下来用Postman工具来进行测试,发送Json数据到后台,成功响应

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_17,color_FFFFFF,t_70,g_se,x_16

 测试登录,登录响应成功并返回了token密钥

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

   然后我们测试客户端携带token,访问update方法。由于update方法路径我没有配置放行,所以请求会被拦截,在拦截中校验token,判断是否放行

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 

 我们模拟黑客拦截获取到token并进行篡改,再访问,看后台如何响应

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbWFzdGVyQ29kZV93eQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 

这是在JwtTokenUtil里配置了解析方法,后台解析不到header里set的数据,所以报错

 

中国移动用户人数上亿,给后台数据库带来的瞬间并发和后台登录压力可想而知。所以大型项目都采用前后端分离,服务器分布式集群部署,这样可以把压力分散到各个节点,每个服务器节点只负责处理一部分的功能

 

腾讯的企业级分布式数据库TD-SQL、TD-SQL-A 在处理大数据,数据冗余,数据高并发等方面,提供了较好的解决方案

3d9879f296b8495bbb7584d75e7f3476.jpeg

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/3892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vuforia AR篇(四)— AR虚拟按钮

目录 前言一、创建虚拟按钮二、创建脚本三、效果 前言 在当今互联网和移动设备普及的背景下,**增强现实(AR)**技术正迅速成为连接现实世界与数字信息的重要桥梁。AR虚拟按钮作为这一技术的创新应用,不仅提供了一种全新的用户交互…

mac上安装Tomcat

1. 简介 Tomcat 是一个开源的 Java 服务器,它实现了 Java Servlet、JavaServer Pages(JSP)和Java WebSocket 技术。Tomcat 是 Apache 软件基金会的一个项目,是一个轻量级、高性能的 Web 容器。作为一个 Web 服务器,To…

go设计模式之抽象工厂模式

抽象工厂模式 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致…

Angular创建项目

Angular创建项目 文章目录 Angular创建项目1. 创建项目1.1 直接安装1.2 跳过npm i安装 2. 运行程序 1. 创建项目 ng new 项目名称 1.1 直接安装 ng new angulardemo --同时会安装依赖包,执行的命令就是npm i 1.2 跳过npm i安装 ng new angulardemo --skip-inst…

Pytorch 的实际应用 学习笔记

一. 模型的下载 weights为false时则为没有提前经过训练的模型,为true时则经过了提前训练 vgg16_false torchvision.models.vgg16(weightsFalse) vgg16_true torchvision.models.vgg16(weightsTrue) 打印 二. 模型的修改 (1)添加操作 …

RabbitMQ中的交换机类型

交换机类型 可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化: Publisher:生产者,不再发送消息到队列中,而是发给交换机 Exchange:交换机,一方面&#xff…

欧科云链:为什么减半对比特币生态的影响正在逐步“减弱”?

出品|OKG Research 作者|Jason Jiang 欧科云链OKLink数据显示,比特币于区块高度840000(北京时间2024年4月20日8:09)成功完成第四次减半,比特币挖矿奖励正式由6.25BTC减少至3.125BTC。此次减半之后&#x…

Spring MVC系列之九大核心组件

概述 Spring MVC是面试必问知识点其一,Spring MVC知识体系庞杂,有以下九大核心组件: HandlerMappingHandlerAdapterHandlerExceptionResolverViewResolverRequestToViewNameTranslatorLocaleResolverThemeResolverMultipartResolverFlashMa…

中电金信:深度解析|数字化营销运营体系搭建

如何更好更快地梳理好体系搭建思路,稳步实现落地?下文将为大家明确搭建的推进步骤、执行要点,帮助商业银行理顺数字化营销运营体系的“点”“线”“面”~ 与所有转型的曲折、阵痛等特征一样,商业银行构建数字化营销运营体系过程中…

URL路由基础与Django处理请求的过程分析

1. URL路由基础 对于高质量的Web应用来讲,使用简洁、优雅的URL设计模式非常有必要。Django框架允许设计人员自由地设计URL模式,而不用受到框架本身的约束。对于URL路由来讲,其主要实现了Web服务的入口。用户通过浏览器发送过来的任何请求&am…

PyQt5中的QTablewidget

环境 PyQt5 VSCode Qt Designer生成界面 在VSCode的资源管理器中,右键选择 PYQT:New Form,打开Qt Designer 选择新建Dialog without Buttons,点击 创建 在左侧的Item Widgets中将 Table Widget拖入Dialog窗体中。 得到界面 将文件保存…

CH4INRULZ-v1靶机练习实践报告

CH4INRULZ-v1靶机练习实践报告 1 安装靶机 靶机是.ova文件,需要用VirtualBox打开,但我习惯于使用VMWare,因此修改靶机文件,使其适用于VMWare打开。 解压ova文件,得到.ovf文件和.vmdk文件。直接用VMWare打开.ovf文件即可。 2 夺…

Oceanbase体验之(一)运维管理工具OCP部署(社区版4.2.2)

资源规划建议 ocp主机1台 内存:64G CPU1:2C及以上 硬盘大于500G observer服务器3台 内存32G CPU:4C以上 硬盘大于1T 建议存储硬盘与操作系统硬盘隔开实现IO隔离 一、OBD、OCP安装包准备 [rootobserver /]# chown -R admin:admin /software/ [rootobserver /]# …

四:物联网ARM开发

一:ARM体系结构概述 1:控制外设led灯还有一些按键这些就要用到gpio,采集传感器的数据需要adc进行转化数据格式,特殊的外设和传感器是通过特殊的协议接口去进行连接的比如一些轴传感器和主控器的连接是通过spi,IIC 控制…

更新!!!Unity移动端游戏性能优化简谱

UWA官方出品,结合多年优化经验撰写了《Unity移动端游戏性能优化简谱》,文章从Unity移动端游戏优化的一些基础讨论出发,例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题,并展示了如何使用UWA的性能检测工…

(MSFT.O)微软2024财年Q3营收619亿美元

在科技的浩渺宇宙中,一颗璀璨星辰再度闪耀其光芒——(MSFT.O)微软公司于2024财政年度第三季展现出惊人的财务表现,实现总营业收入达到令人咋舌的6190亿美元。这一辉煌成就不仅突显了微软作为全球技术领导者之一的地位,更引发了业界内外对这家…

AIX7环境上一次艰难的Oracle打补丁经历

系统环境 AIX :7200-05-03-2148 Oracle:11.2.0.4 PSU: 11.2.0.4.201020(31718723) perl:5.28 问题一:AUTO patch #/u01/app/11.2.0/grid/OPatch/opatch auto /tmp/31718723 错误信息如下:匹配mos 2516761.1…

Kafka 3.x.x 入门到精通(05)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通(05)——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.5 存储消息2.6 消费消息2.6.1 消费消息的基本步骤2.6.2 消费消息的基本代码2.6.3 消费消息的基本原理2.6.3.1消费者组2.6.3.1.1 消费…

美国洛杉矶站群服务器如何提高网站排名?

美国洛杉矶站群服务器怎么样?美国洛杉矶站群服务器如何提高网站排名?Rak部落小编为您整理发布美国洛杉矶站群服务器如何提高网站排名? 美国洛杉矶站群服务器可以通过以下几种方式帮助提高网站排名: - **提升网站性能**:美国站群服务器通常配备高速CPU…

LLM学习笔记-5

目录 1.多层神经网络的实现2. 训练轮次示例3. 保存并加载模型4. 使用GPU加速训练5. 使用上面所教,进行一次训练 摘要:今天想整理一下Pytorch常用操作,以便以后进行预习(不是) 1.多层神经网络的实现 这是常用的操作&a…