再讲 Session 和 Token,彻底弄明白

 

 

前言

在构建用户身份管理系统时,选择会话(Session)还是令牌(Token)是一个关键决策,取决于系统的需求和特定的使用场景。本文将深入探讨何时适合使用会话,何时适合使用令牌,以帮助开发人员在实际应用中做出明智的选择。

什么是Session

众所周知,HTTP协议它是无状态的协议,浏览器多次请求服务器,服务器它无法感知是不是同一用户的请求,于是就有了Session机制。

Session机制是一种在Web开发中用于跟踪用户状态的机制。

  • 它的基本工作流程是,当用户第一次请求Web服务器时,服务器会生成一个唯一的Session,并将其存储在服务器端(通常可以持久化到数据库中)。

  • 然后,服务器通过响应头的方式将该Session的标识符(SessionID)返回给浏览器,并存储在浏览器的Cookie中。

  • 随后的每一次请求,浏览器都会将携带该SessionID,服务器通过SessionID找到对应的Session,从而实现对用户状态的跟踪。

然而,Session机制在分布式部署下存在一定弊端,尤其是在负载均衡环境中容易导致会话验证失败。

什么是Token

为了解决Session机制的弊端,Token机制应运而生。

Token,也称为令牌,一般由密钥、公钥、时间戳等元素通过加密算法(如MD5、SHA)生成。

在Token机制中,用户在通过身份验证后,服务器会生成一个Token并返回给客户端。客户端在后续的每次请求中都携带这个Token,而服务器通过验证Token的合法性来判定请求是否有效。

Session与Token

相比Session,Token的优势在于它可以轻松应对分布式部署和负载均衡环境,因为Token是无状态的,每个请求都携带了足够的信息进行验证,不依赖于特定的服务器节点。

这使得Token成为一种更为灵活和可扩展的身份验证和授权机制。

相同点:

  1. 身份验证手段: Session和Token都是用于用户身份验证的手段,用于标识用户并维持其登录状态。

  2. 过期时间: 两者都可以设置过期时间,限制了它们的有效期,增加安全性。

不同点:

  1. 存储位置:

    • Session: 存储在服务器端,可以保存在内存、数据库、NoSQL等持久化存储中。

    • Token: 存储在客户端,通常存储在浏览器的Cookie中或本地存储。

  2. 数据持久性:

    • Session: 数据可以持久化到服务器端,但如果没有进行持久化,一旦服务器重启,Session数据可能丢失。

    • Token: 由于存储在客户端,Token本身是无状态的,不受服务器重启的影响。

  3. 数据交互方式:

    • Session: 通过在请求头中传递SessionID进行数据交互。

    • Token: 通过在请求头或请求参数中携带Token进行数据交互。

  4. 空间换时间 vs 时间换空间:

    • Session: 采用空间换时间的策略,因为需要在服务器端存储Session数据。

    • Token: 采用时间换空间的策略,因为Token存储在客户端,不占用服务器端空间,每次验证都需要解析Token。

应用场景

会话的应用场景:

  • Web 应用中,通过 cookie 或服务器端存储实现用户登录状态的跟踪。

  • 需要在用户访问期间保持状态信息的应用,例如购物车信息等。

令牌的应用场景:

  • token主要用于 Restful API 等无状态应用程序中,例如分布式系统,通过 OAuth 进行身份验证和授权。

  • 移动应用或小程序中,使用 JSON Web Token (JWT) 进行身份验证。

小结

session 和 token 本质上是没有区别的,都是对用户身份的认证机制。

在实际应用中,需要根据具体需求权衡两者之间的选择,并采取相应的安全措施来保障用户身份的安全性和隐私。在不同的业务场景中合理选型,才能达到事半功倍的效果。

 

 

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

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

相关文章

国图公考:考公和考编一样吗?

公务员:是指在各级机关中,符合规定,行使职权,执行公务的人员 事业单位:事业单位是指由国家或社会组织举办,从事教育、科学、文化、卫生、体育等社会公益事业的单位。 公务员和事业编都是有编制的&#xf…

制造业工厂实施MES系统带来的价值是什么?

MES系统的应用能给制造业带来哪些价值?制造企业想要获得更大的利润,就要从生产开始着手。生产制造是工厂的核心,是公司最大的成本来源。企业只有通过信息化的管理模式,从而达到节约成本,提高质量,才能为客户提供更满意…

8.DNS域名解析服务器

目录 1. 概述 1.1. 产生原因 1.2. 作用: 1.3. 连接方式 1.4. 因特网的域名结构 1.4.1. 拓扑: 1.4.2. 分类 1.4.3. 域名服务器类型划分 2. DNS域名解析过程 2.1. 分类: 2.2. 解析图: 2.2.1. 图: 2.2.2. 过…

hot100:26环形链表II

题目链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 算法思想: 在环形链表hot100:25环形链表-CSDN博客这篇博客中,我们解决了如何判断一个链表有环,即快慢指针相遇的地方就证明链表…

【机器学习】监督学习算法之:线性回归

线性回归 1、引言2、线性回归2.1 定义2.2 基本原理2.3 公式2.4 实现2.5 代码示例 3、总结 1、引言 小屌丝:鱼哥,最近机器学习的文章写的不少啊。 小鱼:你还挺细心的哦。 小屌丝:那必须的,我要学习,我要成长…

通过与chatGPT交流实现零样本事件抽取

1、写作动机: 近来的大规模语言模型(例如Chat GPT)在零样本设置下取得了很好的表现,这启发作者探索基于提示的方法来解决零样本IE任务。 2、主要贡献: 提出了基于chatgpt的多阶段的信息抽取方法:在第一阶…

吉大计网笔记

Osi七层模型 物理层:比特流的透明传输 数据链路层:ip数据包装成帧并传输,处理相邻节点的数据传输。 网络层:选择路由和交换节点,处理任意节点的数据传输。 运输层:主机进程的数据传输服务,端到端…

6个在线网页原型工具的推荐选择

即时设计 即时设计可以说为中国设计师提供了很大的帮助。作为最受欢迎的在线网页原型图设计协作工具之一,在线协作是其核心特征。在线协作工作允许整个团队同时编辑文件,并可以随时随地访问。 团队共享组件库,使成员可以自由上传、下载和使用…

Flink 读取 Kafka 消息写入 Hudi 表无报错但没有写入任何记录的解决方法

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维…

字节:从尾部K个节点反转链表

题目 一个链表0,1,2,3,4,5,6,7,从链表尾部 K个节点翻转,求翻转后的链表。 比如:[0,1,2,3,4,5,6,7] k3 翻转后 [0,1,4,3,2,7,6,5]。 空间复杂度O(1)。 解法 /*** 链表 14,13,12,11,10,9,8,7,6,5,4,3,2,1* 从尾部节点1开始倒着K个一组翻转* …

Kotlin 协程:深入理解 ‘async { }‘

Kotlin 协程:深入理解 ‘async { }’ Kotlin 协程是一种强大的异步编程工具,它提供了一种简洁、易读的方式来处理并发和异步操作。在 Kotlin 协程库中,async {} 是一个关键的函数,它允许我们启动一个新的协程,并返回一…

python爬虫概念及介绍

1. 什么是互联网爬虫? 解释 1 :通过一个程序,根据 Url ( http : // www . taobao . com ) 进行爬取网页,获取有用信息 解释 2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息 2. 爬虫核…