什么是JWT?

JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(php 后端实现JWT认证方法一般用来做轻量级的API鉴权。由于许多API接口设计是遵循无状态的(比如Restful),所以JWT是Cookie Session这一套机制的替代方案。

组成

JWT由三部分组成头部(header)、载荷(payload)、签名(signature)。头部定义类型和加密方式;载荷部分放不是很重要的数据;签名使用定义的加密方式加密base64后的header和payload和一段你自己的加密key。最后的token由base64(header).base64(payload).base64(signatrue)组成。

使用方式

平时需要鉴权的接口需要传这个token,可以post字段提交,但是一般建议放在header头中 ,因为JWT一般配合https使用,这样就万无一失。

为什么安全?

首先token是服务端签发,然后验证时是用同样加密方式把header、payload和key再加密遍 然后看是不是和签名一致 如果不一致就说明token是非法的 这里主要靠的是加密(比如HS256)难以被攻破 至少目前吧 另外不得不说这里的加密对服务器来说是一个开销 这也是JWT的缺点

使用

我很早就听说过JWT 但那时候还没用上 感觉近几年前后端分离思想加速了JWT的使用 MVC前置到前端(VUE、REACT)后端只用提供API API强调无状态 自然而然使用了JWT这套方案

之前做小程序时 没有绝对使用JWT这套方案 我把它简化了下

最近开发的一套项目用的是Laravel做后端提供API服务,所以自然而然使用了JWT,使用的扩展是tymon/jwt-auth 关于这套扩展机制的具体使用可以参考这篇文章 写的很不错:https://laravel-china.org/art...

项目使用时的具体细节

JWT三个时间概念

JWT有三个时间概念: 过期时间 宽限时间 刷新时间

上面那文章说token过了过期时间是不可刷新的,但其实是可以刷新的,我这边使用时可以(开启了黑名单机制和1min宽限时间) 但是过了刷新时间不能刷新这是肯定的

token刷新

可以借用laravel的中间件实现自动刷新 服务端判断过期了但是在刷新时间内主动刷新一次 并把新的token在Header头中返回给客户端

记住我功能

我感觉定义刷新时间(比如一个月) + token自动刷新机制这一套就是记住我功能

不能主动销毁Token

默认JWT这套方案好像不可以主动剔除用户的,因为服务端不会存token,只是验证。这和session不一样。 但是我感觉可以借用黑名单机制 来判断 中间件中判断该token在剔除黑名单中就销毁token并返回鉴权失败

单点登录

结合缓存比如redis存客户端标识是可以的

多套用户权限机制

比如客户端有用户端和商家端两套用户机制(不同表),可以在auth.php定义两个guard 分别指定对应的model Login逻辑单独写 比如auth('userApi') auth('corpApi') 可以拿到不同的guard 刷新中间件是可以共用的 不过router中的middleware方法可以指定具体的middleware

为什么不同权限体系的刷新中间件可以公用

感觉是jwt-auth实现了这机制 验证token时会根据sub字段判断 我base64decode两个token的payload后发现sub一个是1 一个是2

如果有问题欢迎指正!

本文最早发布于Rootrl's blog https://rootrl.github.io/2018...

原文地址:https://segmentfault.com/a/1190000016588298

转载于:https://www.cnblogs.com/lalalagq/p/9965347.html

关于JWT(Json Web Token)的思考及使用心得相关推荐

  1. 关于JWT(Json Web Token)的思考及使用心得 1

    什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(https://tools.ietf.org/html/r...,一般用来做轻量级的API鉴权.由于许 ...

  2. JWT(JSON Web Token)简介及实现

    JWT(JSON Web Token):是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为Json对象安全地传输信息.由于此信息是经过数字签名的,因此可以被验证和信 ...

  3. JWT (Json Web Token)教程

    JWT(Json Web Token)是实现token技术的一种解决方案,JWT由三部分组成: header(头).payload(载体).signature(签名). 头 JWT第一部分是heade ...

  4. JWT(JSON web token)

    1.什么是JWT JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contain ...

  5. jwt token 过期刷新_如何在SpringBoot中集成JWT(JSON Web Token)鉴权

    这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token). 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具 ...

  6. sau交流学习社区-songEagle开发系列:Vue + Vuex + Koa 中使用JWT(JSON Web Token)认证

    一.前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). JWT不是一个新鲜的东西,网上相关的介绍已经非常多了.不是很了解的 ...

  7. 什么是 JWT -- JSON WEB TOKEN

    什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...

  8. 登录令牌JWT — JSON WEB TOKEN

    登录令牌JWT - JSON WEB TOKEN 关于作者 作者介绍

  9. 在吗?认识一下JWT(JSON Web Token) ?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:是虎子呀  地址:my.oschina.net/u/4062 ...

最新文章

  1. 洛谷P3252 [JLOI2012]树
  2. 关于BMP格式图像的理解和读写(c++).docx
  3. oracle 学习小结1
  4. 5-Python3从入门到实战—基础之数据类型(列表-List)
  5. 图元和片元_OpenGL中的顶点、 图元、片元、像素的含义
  6. 常用的sql server 函数、存储过程、临时表总结
  7. Mysql for linux 安装
  8. Word2Vec学习笔记(一)
  9. 一代神机落幕!苹果把iPhone 6 Plus列为过时产品,网友吵翻了...
  10. 国内少有的Flutter干货分享:Flutter的原理及美团的实践!
  11. python三维可视化:配置tvtk
  12. CCL语料库检索系统(网络版)
  13. Tier-1 ISP Tier-2 ISP and Tier-3 ISP
  14. 新浪导航栏下拉菜单案例展示
  15. 服务器封包协议号,DHCP协议的租约确认和封包格式
  16. 计算机重启后一直黑屏转圈,电脑win10开机黑屏转圈十几秒怎么解决
  17. 摆脱“概念化”,自动售货机玩儿“物联网”是否靠谱?
  18. 全球最受欢迎电商平台有哪些?这些平台怎么快速增加销量?
  19. 互联网券商线上开户系统设计与开发技术分享
  20. 解决Win7笔记本下玩游戏的显示问题

热门文章

  1. 嵌入式开发过程中结构体字节对齐问题pragma pack(1)
  2. java文件全是数字编码_批量将Java源代码文件的编码从GBK转为UTF-8
  3. PS3支持的显示标准介绍
  4. Pat乙级1011题:A+B和C
  5. 第八篇Django分页
  6. SyntaxError: Non-UTF-8 code starting with '\xba' in file 错误的解决方法!!
  7. XMPP之openfire无法启动
  8. 50个jQuery代码段帮你成为更出色的JS开发者
  9. UNIX时间戳及日期的转换与计算
  10. jeecg自定义datagrid查询