资讯专栏INFORMATION COLUMN

JSON Web Token学习笔记

cangck_X / 1340人阅读

摘要:一什么是为什么使用是机制的一种替代方案。这种情况下使用就会有更加方便。的数据结构一般为三部分组成头部一般包含签名的算法和令牌的属性负载实际需要传递的数据一般不加密,因此不要把重要信息放在里面签名部分是对前两部分的签名,防止数据篡改。

一、什么是JSON Web Token? 1、为什么使用JSON Web Token

JSON Web Token是cookie session机制的一种替代方案。
一般我们用户认证的流程是:

(1)用户将用户名和密码发送给服务器
(2)服务器验证并通过后,将信息存放在session
(3)返回给客户端一个sessionId
(4)客户端将sessionId保存在cookie
(5)客户端后续的请求,都会将cookie一并发给服务器,里面就包含了sessionId
(6)客户端通过sessionId识别用户

但是在跨域登陆情况下(跨域即跨域名登陆,也就是可能会有好几个不同的服务器),多个服务器需要共享session。这种情况下使用JSON Web Token就会有更加方便。

2、JSON Web Token的原理

JSON Web Token实际上是一个JSON对象,使用流程为:

(1)用户将用户名和密码发送给服务器
(2)服务器将验证并通过以后,生成JSON Web Token,并发送给客户端
(3)客户端将其保存在local storage 或本地数据库
(4)下次客户端再次发起请求,将 Token 附加到 header 中
(5)服务器完全通过JSON Web Token来识别用户

这里值得注意的是,为了保证安全性,在第(2)步中,服务器会通过加密算法将Token加密,也就是说客户端保存的是个加密的Token,到第(5)步服务器对其进行解密。

3、JSON Web Token的数据结构

Token一般为三部分组成:Header.Payload.Signature
(1)Header(头部):一般包含签名的算法和令牌的属性
(2)Payload(负载):实际需要传递的数据(一般不加密,因此不要把重要信息放在里面
(3)Signature(签名):Signature 部分是对前两部分的签名,防止数据篡改。格式一般如下(secret为密钥,只有服务器自己知道):

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)
4、特点

(1)使用 json 作为数据传输,有广泛的通用型,并且体积小,便于传输
(2)不需要在服务器端保存相关信息,完全通过Token来认证
(3)jwt 载荷部分可以存储业务相关的信息(非敏感的),例如用户信息、角色等,因此也可以用于交换信息。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75098.html

相关文章

  • YII2快速学习笔记

    摘要:高性能始终是的首要目标之一。版是上代的老版本,现在处于维护状态。版是一个完全重写的版本,采用了最新的技术和协议,包括依赖包管理器代码规范命名空间特质等等。所以,我们学习版本。启用本镜像服务系统全局配置即将配置信息添加到的全局配置文件中。 工作中需要用到YII框架,于是乎,系统的学习下这套框架,详细教程请看考该站完整系列:YII2教程 一、YII简介 1、什么是YII Yii 是一个高性...

    kbyyd24 评论0 收藏0
  • 两个月的Java实习结束,继续努力

    摘要:花了将近两个星期完成了功能,期间我编写的能力也算是有所提升了。所以能看到这篇文章的同学都是大佬如果想看更多的原创技术文章,欢迎大家关注我的微信公众号。可能感兴趣的链接文章的目录导航微信公众号端文章的目录导航端海量精美脑图 前言 只有光头才能变强 2018年8月30日,今天我辞职了。在6月25号入职,到现在也有两个月时间了。 感受: 第一天是期待的:第一次将项目拉到本地上看的时候,代码...

    snifes 评论0 收藏0
  • 19/3/28 学习笔记

    摘要:它的核心是借鉴的的实现,它的设计基本兼容,在的基础上又扩展了一些以及做了一些性能优化。注销后,就清除里的信息并跳转到登录页面 1 stylus 预处理 项目文件assets目录下新建stylus文件夹,新建 *.styl文件: showImg(https://segmentfault.com/img/bVbqy2M);variable.styl 存储公共样式,iconfont.sty...

    leeon 评论0 收藏0
  • php管理依赖关系工具composer学习笔记

    摘要:首先支持下黄老师的视频网站转型这篇的学习笔记也是根据他的视频教程写的,一共十集,讲解的很简单感兴趣的同志们可以上他视频网站购买视频,网站地址放在文末我的博客作用自动安装所需要的模块,自动加载管理项目,发布到网上上去是默认的加载组件地址安装下 首先支持下黄老师的视频网站转型这篇composer的学习笔记也是根据他的视频教程写的,一共十集,讲解的很简单感兴趣的同志们可以上他视频网站购买视频...

    CoyPan 评论0 收藏0
  • token与sessionId的区别——学习笔记

    摘要:学开发半年多,之前一直有个疑问为什么要用,好好的用不好吗其实就是新技术与老技术,但是还是想弄懂这个问题之前一直疑惑,今天搞懂了,整合了一下学习过程,先对比一下与一简述的生成方式与的生成方式的生成方式浏览器第一次访问服务器时,服务器创建一个, 学开发半年多,之前一直有个疑问:为什么要用token,好好的用sessionID不好吗(其实就是新技术与老技术,但是还是想弄懂)这个问题之前一直疑...

    liaosilzu2007 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<