使用Redis将单机登录改为分布式登录

使用Redis将单机登录改为分布式登录

1. 背景

​ 现在大多数的应用程序登录的方式都是必须满足分布式登录的效果,比如我们在一个客户端登录之后可以在另一个客户端上面共享当前用户的信息,这样在另一个客户端登录的时候就不用用户再次输入自己的账号密码进行登录,拥有更好的用户体验。并且现在大多的应用程序部署至少是在两台服务器以上,所以单服务器的部署方式很少,学会分布式登录的实现是非常有必要的。

2. 实现原理

  1. 传统的单机登录

    image-20240613152551250

    上面存在的问题就是只有单个的服务器,我们在登录的时候在服务器里面会创建一个session然后我们将用户的登录态设置到了session里面进行的存储,所以用户只能在当前服务器里面登录才会获取到当前登录用户的信息,如果换到了其他的服务器上面请求登录那就没有用户的登录信息需要重新进行登录用户的体验就不好,解决办法就是实现分布式session让用户能够在多端登录。

  2. 分布式登录

    image-20240613152627836

3. 代码实现

  1. 引入redis依赖

    <!-- redis -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId>
    </dependency>
    
  2. yml文件中对redis进行配置

    ...session:store-type: redis  # 如果使用redis存储session必须在这里进行更改timeout: 2592000   # 30天过期# redis配置redis:database: 1host: localhostport: 6379  # 默认都是6379timeout: 5000password: 123456  # 默认也是123456
    ...
    
  3. win系统安装redis,我自己安装的是5x版本的,如果有需要的可以留言找我发安装包;

  4. 启动redis我们使用QuickRedis连接redis来可视化的管理Redis里面的内存数据;

    image-20240613155013590

  5. 将项目打包一份,注意更改端口号(因为我们要模拟两台服务器的场景,就必须将项目打包为jar包之后单独时候命令行启动)

    image-20240613191325611

    如果java -jar启动项目时报错没有主清单属性可以将pom文件中的skip值设置为false重新打包即可

  6. 启动两个服务

    // 启动jar包的命令    必须使用两个不同的端口号启动,否则会冲突
    java -jar  jar包位置
    
  7. 到在线接口测试文档中测试

    登录两个接口文档,一个测试登录,另一个服务测试是否能够在不登陆的情况下获取到对应的用户信息

    image-20240613192523663

    image-20240613192624770

    我们在82端口登录了之后,用户信息存储到了redis中,然后我们在80端口能够直接获取到登录之后存储的用户信息,就不用再重复登录了这样就实现了分布式登录,并且能够在可视化的redis软件中查看到我们的用户信息session

    image-20240613192912472

  8. 如果不想使用redis的话将yml里面的配置注释掉,然后再启动类里面的注解后面加上下面的内容

    @SpringBootApplication(exclude = {RedisAutoConfiguration.class})
    

总结:

​ 实现这个分布式session的过程是很简单的,只需要进行一些配置即可,最重要的是我们要知道其中的实现原理。它是将用户的session从服务器上存储到了redis中进行共享实现的。

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

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

相关文章

Java 面向对象 -- Java 语言的封装、继承、多态、内部类和 Object 类

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 007 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

R语言数据分析案例27-使用随机森林模型对家庭资产的回归预测分析

一、研究背景及其意义 家庭资产分析在现代经济学中的重要性不仅限于单个家庭的财务健康状况&#xff0c;它还与整个经济体的发展紧密相关。家庭资产的增长通常反映了国家经济的整体增长&#xff0c;而资产分布的不均则暴露了经济不平等的问题。因此&#xff0c;全球视角下的家…

实时交通 | 城市交通态势采集及可视化操作(定时运行)

一、前言 交通态势数据是关于交通状况的一种量化描述&#xff0c;它提供了关于道路网络运行状态的详细信息。交通态势数据指的是根据车流入量和车流出量的定义&#xff0c;衡量整个全局交通区域交通态势的数据。这些数据通常从车辆GPS轨迹数据中提取&#xff0c;包括车辆行驶速…

Folx软件下载及安装教程

简介&#xff1a; Folx Pro是一款适合Mac的专业下载工具也是一款BT下载器&#xff0c;Folx中文版有一个支持Retina显示的现代界面&#xff0c;提供独特的系统排序、存储下载内容与预览下载文件。Folx中文官网提供Folx教程、激活码、下载。 安 装 包 获 取 地 址&#xff1a; …

tcp协议机制的总结(可靠性,提高性能),基于tcp的应用层协议,用udp如何实现可靠传输

目录 总结 引入 可靠性 ​编辑 分析 三次握手 提高性能 其他 常见的基于tcp应用层协议 用udp实现可靠传输 总结 引入 为什么tcp要比udp复杂的多? 因为它既要保证可靠性,又要兼顾性能 可靠性 分析 其中,序列号不止用来排序,还可以用在重传时去重 确认应答是机制中的…

34 Debian如何配置ELK群集

作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何配置ELK群集 《傅老师Debian知识库系列之34》——原创 ==前言== 傅老师Debian知识库特点: 1、拆解Debian实用技能; 2、所有操作在VMware虚拟机实测完成; 3、致力于最终形成Debian知识手…

开放式耳机值得入手买吗?可以对比这几款开放式耳机看看

居家办公时&#xff0c;选择一款合适的耳机能够有效地提高工作效率。入耳式耳机虽然能够有效地隔绝外界噪音&#xff0c;但长时间佩戴会对耳朵造成负担&#xff0c;甚至引发耳道感染。而头戴式耳机虽然能够提供更好的音质&#xff0c;但体积较大&#xff0c;佩戴起来不够灵活。…

仿FC数学金刚游戏介绍

简介 Math Monkey是Simple2l工作室开发的第二款小游戏&#xff0c;灵感来源于FC游戏平台的数学金刚游戏。小学时玩FC游戏是业余时间最期待的事情&#xff0c;还记得有一次和玩伴玩游戏时已经晚上了&#xff0c;于是约定再玩一把就各回各家&#xff0c;没想到又连玩了N把每一把…

大模型日报|今日必读的 8 篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.Google DeepMind 新研究&#xff1a;当 Transformer 遇见神经算法推理器 Transformer 以其简单而有效的架构彻底改变了机器学习。在互联网的海量文本数据集上预先训练 Transformer&#xff0c;为自然语言理解&…

Java--多维数组

1.多维数组可以看成是数组的数组&#xff0c;比如二维数组就是一个特殊的一维数组&#xff0c;其每一个元素都是一个一维数组 2.二维数组 下列数组啊可看成一个两行五列的数组 int a[][] new int[2][5]; 3.输出二维数组的第一个数组中具体元素&#xff0c;通过调用打…

园区无线网新架构:无CAPWAP的集中式转发

1、从经典的APAC组网说起 谈及园区无线网&#xff0c;大家脑子里不免会蹦出同一个关键词。 没错&#xff0c;市面上常见的中大型企业/园区的无线网络组网方案&#xff0c;大多都是基于集中式网关转发的”APAC”模式。 顾名思义&#xff0c;该架构包括 AP 和AC两个关键角色。 …

shell脚本简单命令

shell脚本 脚本就是可运行代码的集合&#xff0c;脚本语言&#xff08;计算机语言&#xff09;脚本的特点&#xff1a;从上到下&#xff0c;按行执行。 python 脚本语言 格式更严谨 严格的执行锁进。也是从上到下按行执行。 shell脚本就是在shell环境&#xff08;/bin/bash&…

在Kubernetes中部署Elasticsearch高可用集群详细教程

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

2024下半年教师资格证报名全流程来啦!!

2024下半年教师资格证报名全流程来啦&#xff01;&#xff01; 一、重要时间节点 ✅2024下半年教师资格证考试 ⏰笔试报名&#xff1a;7月5日-8日 ⏰笔试时间&#xff1a;9月15日 ⏰笔试成绩查询&#xff1a;11月8日 ⏰面试报名&#xff1a;11月8日起 ⏰面试时间&#xff1a;12…

开源医疗大模型Llama3-Aloe-8B-Alpha,性能超越 MedAlpaca 和 PMC-LLaMA

前言 近年来&#xff0c;大型语言模型 (LLM) 在医疗领域展现出巨大潜力&#xff0c;能够帮助医生和研究人员更快地获取信息、分析数据&#xff0c;并提高医疗服务效率。然而&#xff0c;目前市场上大多数医疗 LLM 都是闭源模型&#xff0c;限制了其在学术研究和应用领域的推广…

移动端消息中心,你未必会设计,发一些示例出来看看。

APP消息中心是一个用于管理和展示用户收到的各种消息和通知的功能模块。它在APP中的作用是提供一个集中管理和查看消息的界面&#xff0c;让用户能够方便地查看和处理各种消息。 以下是设计APP消息中心的一些建议&#xff1a; 1. 消息分类&#xff1a; 将消息按照不同的类型进…

【Numpy】一文向您详细介绍 np.floor()

【Numpy】一文向您详细介绍 np.floor() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;…

基于Python+Django+MySQL+HTML的创新创业平台

DjangoMySQLHTML 基于PythonDjangoMySQLHTML的创新创业平台 用户管理 系统监控 角色管理 资源管理 参数设置 角色管理 简介 学生创新创业平台是一个功能丰富的在线教育或协作系统&#xff0c;支持中文语言环境。它提供用户管理、系统监控、多角色权限控制、资源管理、参…

mac下Xcode在iphone真机上测试运行iOS软件

最近一个需求需要在iPhone真机上测试一个视频直播的项目。 需要解决如何将项目 app 安装到真机上 在进行真机调试。 安装Xcode 直接在App Store上搜索Xcode安装即可。 关键是要安装Simulator。项目需要安装iOS17.5但是由于安装包太大&#xff0c;并且网络不稳定的原因。在Xco…