学习笔记——后端项目中的相关技术 【随时更新】

2024-08-28 08:36

本文主要是介绍学习笔记——后端项目中的相关技术 【随时更新】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. Session 共享
    • 1.0 cookie和session的工作流
    • 1.1 Cookie范围
    • 1.2 为什么要共享?
    • 1.3 如何共享存储
    • 1.4 session共享实现

1. Session 共享

1.0 cookie和session的工作流

在 Web 开发中,Cookie 和 Session 是非常常见的,尤其是在处理用户身份验证、会话管理等方面。

  • 用户提交登录请求:
    用户通过登录页面提交用户名和密码。

  • 服务器验证用户信息:
    服务器接收到登录请求后,验证用户提供的用户名和密码是否正确。

  • 创建 Session:
    如果验证通过,服务器生成一个唯一的 Session ID,并在服务器端创建一个 Session 来存储用户的相关信息(如用户 ID、用户名、权限等)。

    服务器将这个 Session ID 存储在 Session 对象中,并设置一个过期时间。

  • 发送 Session ID 到客户端:
    服务器通过响应头,在响应头中设置 Set-Cookie,Set-cookie中包含了 Session ID。

  • 浏览器发送请求:
    客户端收到响应后,如果服务器给了Set-cookie,当用户在登录后访问其他页面时,浏览器会自动将包含 Session ID 的 Cookie 附加到每个 HTTP 请求中。

  • 服务器验证 Session:
    服务器接收到请求后,会检查请求中的 Cookie,提取出 Session ID。
    服务器使用这个 Session ID 查找对应的 Session,以确定该用户的身份,并获取相关的用户数据。

1.1 Cookie范围

  • Cookie存储在客户端且不可跨域。

  • 种session的时候注意范围,可以在配置的cookie.domain进行设置
    如果要共享cookie,可以种一个更高层的公共域名。

  • 比如,前端localhost:3000访问,分配cookie;后4000访问,又重新分配cookie。设置成更高的公共域名localhost之后,4000、5000等再访问的时候,不用重新给分配cookie了。

server:port: 8080servlet:context-path: /apisession:cookie:domain: localhost

1.2 为什么要共享?

  • 为什么服务器A登陆后,请求发到服务器B,B不认识该用户?

    原因:请求发到服务器A上,session(用户登录信息)存在A的内存中。
    此时B的内存没有该用户的sessionID,因此不认识该用户。
    在这里插入图片描述

    解决方案:共享存储,把session存储到A和B都能读取到的中间件中,可以使用redis、mysql、文件服务器ceph等;而不是把数据放到单台服务器的内存中。
    在这里插入图片描述

1.3 如何共享存储

核心思想:把数据放到同一个地方集中管理。

  1. Redis。用户信息读取 / 是否登录的判断及其频繁,Redis是基于内存的键值存储系统,读写性能很高,简单的数据单机qps能达到5w-10w。
  2. MySQL
  3. 文件服务器,如ceph

1.4 session共享实现

redis的云上装载参考:Java相关工具/插件的安装教程汇总

  1. 引入redis → 能够操作redis。
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.6.4</version>
</dependency>

redis管理工具:quick redis,能看到存进来的session信息等。

  1. 引入spring-session 和 redis 的整合,使得自动将session存储到redis中。
<!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
<dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId><version>2.6.3</version>
</dependency>
  1. 修改spring-session存储配置,改application.yml的配置。
    原来session只设置了timeout过期时间,现在要加一个store-type。
    spring.session.store-type默认是none,表示存储在服务器
    设置成:store-type:redis 表示从 redis 读写 session
Spring:session:timeout: 86400store-type: redis

这篇关于学习笔记——后端项目中的相关技术 【随时更新】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114267

相关文章

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关