几句话说清session,cookie和token的区别及说明

 更新时间:2023年12月29日 09:54:57   作者:陈賝  
这篇文章主要介绍了几句话说清session,cookie和token的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、cookie和session实际上是同一套认证流程,相辅相成

cookie保存在客户端

(通常保存session的sessionID,这个sessionID是一个毫无规则的随机数,由服务器在客户端登录通过后随机生产的。

客户端每次访问该网站都要带上这个由sessionID组成的cookie。

服务器收到请求,首先拿到客户端的sessionID,然后从服务器内存中查询它所代表的客户端(用户名,用户组,有哪些权限等)。)

session保存在服务器

(用于记录客户状态,比如我们经常会用session保存客户的基本信息、权限信息等)

二、token则可以服务器完全不用保存任何登录信息

客户端可以将Token保存到任何地方,无限制,无状态,利于分布式部署。

整体的流程是这样的:

  • 客户端使用用户名、密码做身份验证;
  • 服务端收到请求后进行身份验证;(也可能是统一登录平台、网关)
  • 验证成功后,服务端会生成一堆客户端身份信息,包括用户名、用户组、有那些权限、过期时间等等。这个整体就叫做token。签发一个Token后返回给客户端;
  • 客户端收到Token以后可以把它存储起来(可以放在随意的数据库中,例如Redis);每次向服务端发送请求的时候,都要带着Token;
  • Token会有过期时间,过期后需要重新进行验证;
  • 服务端收到请求,会验证客户端请求里面的Token,验证成功,才会响应客户端的请求;

三、为何诞生这些

由于HTTP无状态的特性,如果要实话客户端和服务器端的会话保持,那就需要其它机制来实现,于是Cookie和Session应运而生。

Session和Cookie机制来保持会话,会存在一个问题:客户端浏览器只要保存自己的SessionID即可,而服务器却要保存所有用户的Session信息,这对于服务器来说开销较大,而且不利用服务器的扩展(比如服务器集群时,Session如何同步存储就是个问题)!

于是有人思考,如果把Session信息让客户端来保管而且无法伪造不就可以解决这个问题了?进而有了Token机制。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java的MoreSuppliers工具类方法解析

    Java的MoreSuppliers工具类方法解析

    这篇文章主要介绍了Java的MoreSuppliers工具类方法解析,MoreSuppliers类是一个Java工具类,它提供了一些增强的Supplier函数,使得Supplier执行的结果可以被缓存,真正的调用只执行一次,需要的朋友可以参考下
    2024-01-01
  • java中类和对象的详细介绍

    java中类和对象的详细介绍

    这篇文章主要给大家介绍了关于java中类和对象的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • SpringMVC框架post提交数据库出现乱码解决方案

    SpringMVC框架post提交数据库出现乱码解决方案

    这篇文章主要介绍了SpringMVC框架post提交数据库出现乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • SpringBoot深入探究四种静态资源访问的方式

    SpringBoot深入探究四种静态资源访问的方式

    这一节详细的学习一下SpringBoot的静态资源访问相关的知识点。像这样的知识点还挺多,比如SpringBoot2的Junit单元测试等等。本章我们来了解静态资源访问的四种方式
    2022-05-05
  • Java中可变长度参数代码详解

    Java中可变长度参数代码详解

    这篇文章主要介绍了Java中可变长度参数代码详解,涉及了实参个数可变的定义方法,数组包裹实参等几个问题,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • 对Mapper 中几种update的区别说明

    对Mapper 中几种update的区别说明

    这篇文章主要介绍了对Mapper 中几种update的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Java和MySQL数据库中关于小数的保存问题详析

    Java和MySQL数据库中关于小数的保存问题详析

    在Java和MySQL中小数的精度可能会受到限制,如float类型的小数只能精确到6-7位,double类型也只能精确到15-16位,这篇文章主要给大家介绍了关于Java和MySQL数据库中关于小数的保存问题,需要的朋友可以参考下
    2024-01-01
  • 简单谈谈Java中String类型的参数传递问题

    简单谈谈Java中String类型的参数传递问题

    这篇文章主要介绍了简单谈谈Java中String类型的参数传递问题的相关资料,需要的朋友可以参考下
    2015-12-12
  • swing jtextArea滚动条和文字缩放效果

    swing jtextArea滚动条和文字缩放效果

    这篇文章主要为大家详细介绍了swing jtextArea滚动条和文字缩放效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • SpringBoot中的@DependsOn注解详解

    SpringBoot中的@DependsOn注解详解

    这篇文章主要介绍了SpringBoot中的@DependsOn注解详解,
    2023-08-08

最新评论