首页 > 其他分享 >Session的工作原理、Session与Token的区别

Session的工作原理、Session与Token的区别

时间:2024-08-14 13:26:18浏览次数:13  
标签:用户 Token Session 服务器 原理 ID 客户端

Session 是一种在无状态的 HTTP 协议中用来实现用户状态管理的机制。它通过在服务器端保存用户的状态信息,并通过客户端在每次请求时传递一个唯一的标识符(通常称为 Session ID),实现了在多个请求之间维持用户的会话状态。

一、Session 的工作原理:

  1. 客户端发送请求:用户首次访问网站时,客户端(例如浏览器)向服务器发送一个 HTTP 请求。

  2. 服务器创建 Session

    • 服务器在接收到请求后,会为这个用户创建一个 Session 对象,用来保存用户的会话信息(例如用户身份、购物车内容、浏览历史等)。
    • 服务器生成一个唯一的 Session ID,通常是一个随机的字符串,用来标识这个 Session
  3. 服务器返回 Session ID

    • 服务器将生成的 Session ID 通过 HTTP 响应传回给客户端,通常是以 Cookie 的形式存储在客户端的浏览器中。这个 Cookie 通常名为 JSESSIONID 或其他类似名称。
  4. 客户端携带 Session ID 发送后续请求

    • 当客户端发送后续的 HTTP 请求时,浏览器会自动在请求头中附带上 Session ID,以便服务器识别出是同一个用户的请求。
    • 服务器通过 Session ID 找到对应的 Session,从而获取并更新用户的会话信息。
  5. 服务器处理请求

    • 服务器根据找到的 Session 中存储的信息来处理用户的请求。例如,如果用户已登录,服务器可以从 Session 中获取用户的登录状态,而无需每次都重新认证用户身份。
  6. Session 过期与销毁

    • Session 具有过期时间,如果在设定的时间内客户端没有再次访问服务器,这个 Session 会自动失效,服务器将会销毁这个 Session
    • 用户主动登出时,服务器也会销毁对应的 Session,以确保安全性。

二、Session与Token的区别

1、存储位置的不同

  • Session存储在服务端,服务端会维护一个"Session"数据库,用户的会话信息将存储在服务器上面(如登录状态、权限等)。客户端只存储“Session ID”,通常用cookie保存
  • Token,通常使用JWT实现,包含用户身份等。“Token由服务器生成并返回给客户端,客户端负责存储(LocalStorage、SessionStorage、或cooki),每次请求时附带发给服务端

2. 安全性

  • Session

    • 因为 Session 信息存储在服务器端,客户端只持有一个 Session ID,安全性较高。如果 Session ID 被窃取,攻击者可以冒充用户发起请求,但无法直接读取用户的会话信息。
    • 服务器需要额外的资源来维护和保护 Session 数据,尤其在高并发环境下,可能导致扩展性问题。
  • Token

    • Token 是自包含的,所有的身份信息都在 Token 中,如果 Token 被窃取,攻击者可以完全冒充用户。
    • Token 通常使用加密和签名技术来防止篡改和伪造,可以通过设置过期时间和刷新机制来提高安全性。
       

3、扩展性

  • Session

    • 由于 Session 存储在服务器端,随着用户数量增加,服务器需要更多的内存和存储来维护会话状态。这在分布式系统中可能会导致复杂性,因为需要在多个服务器之间共享或同步 Session 数据。
  • Token

    • Token 是无状态的,不依赖于服务器存储。服务器不需要存储每个用户的会话信息,因此更容易扩展,尤其适合微服务架构或跨域请求。
    • 服务器只需要验证 Token 的签名和有效性,不需要与其他服务器同步状态信息。

标签:用户,Token,Session,服务器,原理,ID,客户端
From: https://blog.csdn.net/qq_63997101/article/details/141183291

相关文章

  • [天线原理及设计>基本原理] 2. 细线天线上的电流分配
    2.细线天线上的电流分配为了说明线性偶极子上电流分布的产生及其随后的辐射,让我们首先从无损双线传输线的几何形状开始,如图1.15(a)所示。电荷的运动沿每条导线产生幅度为I0/2的行波电流。当电流到达每根电线的末端时,它会经历完全反射(幅度相等,相位反转180°)。当反射行波与入射行......
  • 面试官:说说volatile应用和实现原理?
    volatile是并发编程中的重要关键字,它的名气甚至是可以与synchronized、ReentrantLock等齐名,也是属于并发编程五杰之一。需要注意的是volatile并不能保证原子性,因此使用volatile并没有办法保证线程安全。并发编程五杰:PS:“并发编程五杰”是我个人起的名字,大家也不用太......
  • [天线原理及设计>基本原理] 1 辐射机制
    1.辐射机制1.1.SingleWire单线如果电荷不移动,则不会产生电流,也不会产生辐射。如果电荷以匀速移动:a.如果电线是直的,并且范围是无限的,则没有辐射。b.如果电线弯曲、弯曲、不连续、端接或截断,则会产生辐射,如图1.10所示。如果电荷在时间运动中振荡,即使线是直的,它也......
  • 多态的机制原理
    多态的机制原理本质上多态分两种1、编译时多态(又称静态多态)2、运行时多态(又称动态多态)多态通常有两种实现方法1、子类继承父类(extends)2、类实现接口(implements)要使用多态,在声明对象时就应该遵循一条法则:声明的总是父类类型或接口类型,创建的是实际类型。例来说,假设我们......
  • React 框架原理的八点
    React框架原理深入剖析React是一个用于构建用户界面的JavaScript库,它以其高效的渲染机制、组件化的开发模式和创新的设计理念在前端开发领域占据了重要地位。一、虚拟DOM(VirtualDOM)虚拟DOM是React性能优化的核心策略之一。在传统的Web开发中,每当数据发生变化......
  • Transformer--概念、作用、原理、优缺点以及简单的示例代码
    Transformer的概念Transformer是一种基于自注意力机制的神经网络模型,最早由Vaswani等人在2017年的论文《AttentionisAllYouNeed》中提出。它主要用于自然语言处理任务,如机器翻译、文本生成、文本分类等。与传统的循环神经网络(RNN)和长短时记忆网络(LSTM)不同,Transformer完全......
  • KEEPALIVED高可用集群原理及实例
    一.高可用集群1.1Keepalived介绍Keepalived是一个用C语言编写的轻量级的高可用解决方案软件。主要功能包括:1.实现服务器的高可用性(HighAvailability):通过虚拟路由冗余协议(VRRP)来实现主备服务器之间的故障切换,当主服务器出现故障时,备份服务器能够自动接管服务,保证业务的......
  • 在K8S中,你用的flannel是哪个工作模式及fannel的底层原理如何实现数据报文转发的?
    在Kubernetes(K8S)中,Flannel是一个广泛使用的容器网络接口(CNI)插件,它提供了一种简单而有效的方法来为集群中的每个容器分配网络,并确保它们可以互相通信。Flannel支持多种工作模式来实现数据报文的转发,其中最常见的是VXLAN、UDP和HOST-GW三种模式。1.Flannel的工作模式VXLAN模式:......
  • mmap原理
    https://www.cnblogs.com/binlovetech/p/17712761.htmlhttps://yangjie2.github.io/2021/11/14/mmap原理与应用/基础物理世界中的实体或者逻辑实体在计算机中都用数据结构来表示,比如一个进程就用一个task_struct来表示。进程的虚拟内存用一个代表虚拟内存的节点组成的链表来表......
  • Tornado 龙卷风混币原理
    项目背景Tornado(https://tornado.cash/)是以太坊隐私赛道著名的混币项目,其混币技术主要使用了 zk-SNARK零知识证明。1、关于zk-SNARK零知识证明的原理可以参见if(DAO)之前的文章:https://mirror.xyz/0xd05cFA28Eaf8B4eaFD8Cd86d33c6CeD1a1875417/X3qSOjObTknXQ_iGhD......