全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

什么是JWT?使用JWT的流程?对比传统的会话有啥区别?

发布时间:2022-09-23 16:13:53
发布人:wjy

  JSON Web Token,一般用它来替换掉Session实现数据共享。

  使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

  1、客户端通过用户名和密码登录服务器;

  2、服务端对客户端身份进行验证;

  3、服务端对该用户生成Token,返回给客户端;

  4、客户端将Token保存到本地浏览器,一般保存到cookie中;

  5、客户端发起请求,需要携带该Token;

  6、服务端收到请求后,首先验证Token,之后返回数据。

什么是JWT1

  如上图为Token实现方式,浏览器次访问服务器,根据传过来的唯一标识userId,服务端会通过一些算法,如常用的HMAC-SHA256算法,然后加一个密钥,生成一个token,然后通过BASE64编码一下之后将这个token发送给客户端;客户端将token保存起来,下次请求时,带着token,服务器收到请求后,然后会用相同的算法和密钥去验证token,如果通过,执行业务操作,不通过,返回不通过信息。

  可以对比下图session实现方式,流程大致一致。

什么是JWT2

  优点:

  无状态、可扩展 :在客户端存储的Token是无状态的,并且能够被扩展。基于这种无状态和不存储Session信息,负载均衡器能够将用户信息从一个服务传到其他服务器上。

  安全:请求中发送token而不再是发送cookie能够防止CSRF(跨站请求伪造)。

  可提供接口给第三方服务:使用token时,可以提供可选的权限给第三方应用程序。

  多平台跨域

  对应用程序和服务进行扩展的时候,需要介入各种各种的设备和应用程序。 假如我们的后端api服务器a.com只提供数据,而静态资源则存放在cdn 服务器b.com上。当我们从a.com请求b.com下面的资源时,由于触发浏览器的同源策略限制而被阻止。

  我们通过CORS(跨域资源共享)标准和token来解决资源共享和安全问题。

  举个例子,我们可以设置b.com的响应首部字段为:

什么是JWT3

相关文章

机器学习中Inference和predict的区别是什么?

机器学习中Inference和predict的区别是什么?

2023-10-15
kd-tree和ball-tree在算法实现原理上有什么区别?

kd-tree和ball-tree在算法实现原理上有什么区别?

2023-10-15
nn.Linear()和nn.Embedding()有什么区别?

nn.Linear()和nn.Embedding()有什么区别?

2023-10-14
敏捷开发和迭代式开发的根本区别是什么?

敏捷开发和迭代式开发的根本区别是什么?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取