说一说JWT鉴权

本文介绍了JWT(JSON Web Token)的原理,包括其由头部、负载和签名三部分组成,以及如何在实践中应用JWT进行鉴权。讨论了refresh Token的作用,即在Access Token过期时更新Access Token,确保鉴权的有效性。同时,文章探讨了JWT与传统session鉴权的区别,并解释了为何需要使用refresh Token来提高服务端的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

最近几天被频繁问到了关于jwt得内容,决定写一篇作文加深一下印象。

正文

jwt介绍

JWT是JSON Web Token的缩写。
分为三段(整个为base64编码):

  • 头部:包括加密方式
  • 负载:包括用户的不敏感信息
  • 签名:用secret将前两部分加密(利用第一个里面的加密方式),主要用来验证是不是本人签发的

实践过程

实践过程中有两个token,一个refresh Token、一个access Token。refresh token的作用就是使access token过期的时候更新access token。
具体流程如下:

  • 客户端使用用户名和密码进行验证
  • 服务端生成有效时间较短的Access Token,和有效时间较长的Refresh Token
  • 客户端访问需要认证的接口时,携带Access Token
  • 如果Access Token没有过期,那么久鉴权后返回客户端需要的数据
  • 如果鉴权失败(例如返回401错误),则使用Refresh Token向刷新接口申请新的Access Token
  • 如Refresh Token没有过期,服务端向客户端发新的Access Token
  • 客户端使用新的Access Token访问需要认证的接口。

提问

  1. 和传统的鉴权方式有什么区别?
    答: 多个服务器的时候,使用session的话十分占用服务器的资源,而使用token的话,服务端只要保存一个key就可以了。
  2. 多个请求的时候,多次鉴权,如果Access Token过期了,多个Access Token?
    答:我整个时间过程使在路由请求之前使用中间件鉴权,类似于router.get('/', authorization(), controller.home.home.index);authorization是在一个路由跳转之前的,只会有一次,此次要么更新access Token,要么跳转到登录页,所以最后我们再页面里面请求的时候都是可用的access Token。
  3. 为什么要用refresh Token?
    答:主要是方便服务端禁用用户的Token,只需要将refresh Token禁用或者删除即可。

结语

JWT的使用提高了健全的功能和效率,用起来挺好的emmm
早点休息!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值