分析Session和Token

技术分析Session和Token这篇文章主要讲解了“分析Session和Token”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分析Session和Token”吧!01

本文主要讲解“分析会话和令牌”,简单明了,易学易懂。请跟随边肖的思路一起学习《分析会话与表征》!

01.Cookie

是在客户端(浏览器)保存用户信息的机制;cookie由服务器生成,发送到浏览器,然后浏览器将cookie以键值对的形式保存在客户端的目录中。每个浏览器的存储大小会有一些差异,一般不超过4KB

在下一个请求中,Cookie将被发送到服务器,服务器将分析Cookie中的信息并验证身份。

例如,当你加入一家公司时,你会得到一张工作卡,上面有你的名字、工作号码、部门等信息。当你进入工作场所时,你可以带着工作证进出。

但是Cookie不能跨域名使用;就好像我拿着公司的工作证去你们公司,保安肯定不让我进去。

02.Session

存储在服务器中,可用于记录客户状态;

例如,我们经常使用Session保存客户的基本信息和权限信息。用户第一次登录后,服务器将创建一个会话,并将会话ID返回给浏览器。浏览器通常将其写入一个Cookie,也称为会话Cookie。当浏览器再次访问时,它只需要使用SessionID从服务器上查找会话。

此外,这个SessionID不必保存在Cookie中,但是对于浏览器客户端来说,每个人的默认做法是将其放在Cookie中。

03.Cookie 和 Session

关于cookie和会话的区别,很多同学会回答:“cookie存储在客户端,会话存储在服务器端”。其实这个想法并不全面:

Cookie是一个真实的东西,一个非常具体的东西,也就是一条数据。会话是一个抽象的概念,或者说模式方法,它有很多实现方案。

比如Tomcat的实现方法:将状态保存在服务器中,然后生成一个JSESSIONID放入Cookie中;请求到来后,用JSESSIONID在服务器端查询和验证状态。

分析Session和Token

04.Token

当然,随着用户数量的增加,存储在服务器中的Sessions也在增加,给服务器带来了很大的压力。此外,如果程序部署在集群或分布式模式下,同一用户第一次请求访问A服务器并创建会话,但第二次请求被发送到B服务器,但B服务器上没有以前创建的会话。这就是分布式体系结构中的会话共享问题。

为了解决这个问题,我们可以在服务器之间同步会话,或者简单地将会话保存到第三方组件,比如Redis但是不管怎样,会话成为了项目的负担。

这时服务器会想,如果Session没有和我一起保存,第一时间把用户名和密码发给我,我验证后给你一个通行证,然后客户端每次请求的时候都会带这个通行证;

这张通行证是代币。当然,验证结果需要包含客户端信息,服务器需要知道是谁发出的请求。还需要包含时间信息,因为通行证不可能永远有效;通行证不能用明文写,否则会有被拦截的风险。

HMAC-SHA1:

令牌=用户标识|到期日|HMAC(用户标识|到期日,k)AES:

令牌=AES(用户id |到期日,x)RSA:

令牌=RSA(用户标识|到期日,私钥)分析Session和Token

05.SSO 单点登录

有的公司会搭建统一的登录系统(单点登录),客户端先获取令牌,验证后再拿着这些令牌访问其他系统;API Gateway也可以提供类似的功能,我们公司就是这样。客户端访问时,首先从网关获取Token,通过身份验证后才能访问授权接口,一段时间后,必须再次更改Token。

分析Session和Token

06.Token 和 Session

对于会话和令牌,它们之间没有本质区别。两者都是加密字符串,可以进行身份验证。当然,token和session也有一些区别,比如token更容易跨域,token更好控制等。另外,在授权场景中,token比session有更大的优势;

比如我开发了一个允许微信用户登录的网站。使用令牌的过程是这样的:

登录网站时,跳转到微信登录页面;

输入用户名和密码登录微信后,给我们一个令牌;

用户可以在我们的网站上使用令牌,我们的网站不需要知道你的微信用户名和密码。

总之,在同一个网站中,token和session没有太大的区别,如果跨站点使用,token会更方便。

感谢阅读。这就是“分析会话和令牌”的内容。看完这篇文章,相信你对分析Session和Token有了更深的理解,具体用法还需要实践验证。在这里,边肖将为大家推送更多相关知识点的文章。欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/71152.html

(0)

相关推荐

  • Linq-Include

    技术Linq-Include Linq-IncludeLINQ中的Include()有什么作用我尝试进行了大量研究,但我更像是数据库专家-因此,即使MSDN中的解释对我也没有任何意义.有人可以解释一下,

    礼包 2021年12月3日
  • sublime和powershell(sublime怎么运行py代码)

    技术Sublime如何更改Powershell为CMD本篇内容主要讲解“Sublime如何更改Powershell为CMD”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sub

    攻略 2021年12月21日
  • 如何利用RMAN复制CDB的PDB

    技术如何使用RMAN对CDB中的PDB进行复制本篇内容主要讲解“如何使用RMAN对CDB中的PDB进行复制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用RMAN对CD

    攻略 2021年12月21日
  • MySQL数据库安装过程中常见错误如何处理

    技术MySQL数据库安装过程中常见错误如何处理这篇文章主要为大家展示了“MySQL数据库安装过程中常见错误如何处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL数据

    攻略 2021年12月4日
  • 如何理解php中echo

    技术如何理解php中echo这篇文章主要介绍“如何理解php中echo”,在日常操作中,相信很多人在如何理解php中echo问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解php中e

    攻略 2021年10月22日
  • 编程语言的优缺点对比的实例分析

    技术编程语言的优缺点对比的实例分析编程语言的优缺点对比的实例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  python作为一门高级编程语言,它的诞生

    攻略 2021年11月16日