Session和token的区别是什么

Session和token的区别在于:1、支持跨域访问:Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输;2、无状态(也称:服务端可扩展行):Token机制在服务端不需要存储session信息。

一、区别

1、支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输。

2、无状态(也称:服务端可扩展行):Token机制在服务端不需要存储session信息,因为Token 自身包含了所有登录用户的信息,只需要在客户端的cookie或本地介质存储状态信息。

3、去耦: 不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在你的API被调用的时候,你可以进行Token生成调用即可。

4、适用接口跨平台: 当你的客户端是一个原生平台(iOS, Android,Windows 8等)时,Cookie是不被支持的(你需要通过Cookie容器进行处理),这时采用Token认证机制就会简单得多。

5、CSRF:因为不再依赖于Cookie,所以你就不需要考虑对CSRF(跨站请求伪造)的防范。

6、基于标准化:你的API可以采用标准化的 JSON Web Token (JWT). 这个标准已经存在多个后端库(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如:Firebase,Google, Microsoft)。

二、session机制,原理

session是服务端存储的一个对象,主要用来存储所有访问过该服务端的客户端的用户信息(也可以存储其他信息),从而实现保持用户会话状态。但是服务器重启时,内存会被销毁,存储的用户信息也就消失了。

不同的用户访问服务端的时候会在session对象中存储键值对,“键”用来存储开启这个用户信息的“钥匙”,在登录成功后,“钥匙”通过cookie返回给客户端,客户端存储为sessionId记录在cookie中。当客户端再次访问时,会默认携带cookie中的sessionId来实现会话机制。

session是基于cookie的。

  • cookie的数据4k左右
  • cookie存储数据的格式:字符串key=value
  • cookie存储有效期:可以自行通过expires进行具体的日期设置,如果没设置,默认是关闭浏览器时失效。
  • cookie有效范围:当前域名下有效。所以session这种会话存储方式方式只适用于客户端代码和服务端代码运行在同一台服务器上(前后端项目协议、域名、端口号都一致,即在一个项目下)

延伸阅读

token机制,原理

适用于项目级的前后端分离(前后端代码运行在不同的服务器下)

请求登录时,token和sessionId原理相同,是对key和key对应的用户信息进行加密后的加密字符,登录成功后,会在响应主体中将{token:’字符串’}返回给客户端。客户端通过cookie、sessionStorage、localStorage都可以进行存储。再次请求时不会默认携带,需要在请求拦截器位置给请求头中添加认证字段Authorization携带token信息,服务器端就可以通过token信息查找用户登录状态。

token认证流程

oken 的认证流程与cookie很相似

  • 用户登录,成功后服务器返回Token给客户端。
  • 客户端收到数据后保存在客户端
  • 客户端再次访问服务器,将token放入headers中
  • 服务器端采用filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码

文章标题:Session和token的区别是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38951

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月20日 下午3:43
下一篇 2023年2月20日 下午4:04

相关推荐

  • 如何做好项目标准化管理

    项目标准化管理是确保项目顺利进行和成功完成的重要手段,主要包括确立统一的管理流程、采用标准化的工具和模板、建立一致的沟通机制、实施统一的质量控制等关键措施。这些措施能有效提升项目管理的效率和质量,保证项目目标的实现。确立统一的管理流程为项目标准化管理的核心,它要求对项目的启动、规划、执行、监控和收尾…

    2024年4月11日
    5600
  • 什么叫市场营销战略管理

    市场营销战略管理是:市场营销战略(Marketing Strategy) 是指企业在现代市场营销观念下,为实现其经营目标,对一定时期内市场营销发展的总体设想和规划。市场营销战略作为一种重要战略,其主旨是提高企业营销资源的利用效率,使企业资源的利用效率最大化。 一、什么叫市场营销战略管理 市场营销战略…

    2023年5月6日
    44900
  • 质量管理项目经理如何做

    质量管理项目经理的职责主要包括制定质量目标、组织实施质量计划、监控项目执行的质量、实施质量改进措施、以及确保项目组成员遵守质量管理体系要求。在这些职责中,制定质量目标是至关重要的环节,因为它为项目提供了明确的质量方向和标准。一个明确的质量目标不仅能够引导团队成员理解他们的工作应该如何符合项目的总体要…

    2024年4月11日
    6000
  • 如何管理好日常开销项目

    管理好日常开销项目的关键策略包括:创建并遵循预算、使用开销跟踪工具、规划大额支出、寻找节省开支的机会、理智消费、进行定期的财务审查。在这些策略中,创建并遵循预算是基础作用最大的步骤。它要求你首先清晰地了解你的收入与支出情况,并根据你的长期和短期财务目标来设定合理的开支界限。预算规划不仅帮助你避免过度…

    2024年4月10日
    4700
  • oa办公系统

    标题: OA办公系统的实用性与发展趋势 摘要: OA办公系统为组织高效协作提供了强有力的技术支撑,体现在减轻文职工作负担、提高数据处理效率、保障信息安全三方面。这一系统通过数字化手段改善了企业内部的工作流程与沟通机制。数字化流程的完善使得工作效率提升,信息传递变得迅速而准确。在详情中,数字化流程减少…

    2024年1月12日
    18600
  • vscode为什么不能输出

    Visual Studio Code (VSCode) 不能输出的原因主要有三个:终端配置不当、代码运行错误、插件或扩展不兼容。经常输出问题可能与VSCode的集成终端设置有关,这是最常见的问题。例如,如果未配置正确的运行环境,或者路径设置有误,就会导致不能输出。代码错误是另一种常见的问题,比如程序…

    2024年4月3日
    10300
  • Java中的性能优化技巧是什么

    Java性能优化技巧涉及代码优化、存储管理、多线程应用、系统调优与工具应用。代码层面可以通过减少对象创建、使用合适的数据结构、避免不必要的计算提高效率。存储管理包括合理的垃圾回收策略和内存溢出预防措施。多线程应用强调线程安全与锁的合理使用,以免产生竞态条件或死锁。系统调优关注JVM参数的优化及操作系…

    2024年1月8日
    28800
  • 如何管理学生学位建设项目

    如何管理学生学位建程项目的关键在于明确项目目标、制定详细规划、搭建高效团队、实施严格监控以及确保质量和时间控制。为了确保学生学位建设项目的成功,项目负责人应该先做好详细的项目规划。这包括明确项目的范围,设计合适的项目时间表,以及为不同的任务分配合适的资源和人员。同时,应该建立一套有效的沟通机制,确保…

    2024年4月11日
    4400
  • DevOps如何提高软件可靠性

    ### 摘要 DevOps是一种强化软件交付速度与可靠性的实践方法。1、自动化部署流程确保一致性与减少错误。2、实施持续集成和持续部署(CI/CD)实现软件的快速迭代。3、监控与日志分析帮助即时发现并应对问题。4、构建微服务架构提升系统的灵活性与健壮性。5、实施混沌工程测试系统的恢复能力。自动化部署…

    2024年1月18日
    17100
  • 信息系统的开发有哪些特点

    信息系统的开发特点有:1、复杂性高;2、集体的创造性活动;3、质量要求高;4、产品是无形的。复杂性高是指企业属于非确定性的复杂系统,不同的企业内部构成及功能都有所不同,随着企业规模的日益扩大,信息技术的发展,系统的功能也越来越复杂。 1、复杂性高 复杂性高我们知道,企业属于非确定性的复杂系统,不同的…

    2023年1月9日
    1.4K00

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部