初识JWT

初识JWT

什么是JWT

官网解释

是一种开放标准,用于各方之间以JSON对象安全的传输信息,此信息可以验证和信任,因为它是数字签名的。

自己理解

JWT是json web token的缩写,见名知意就是通过JSON形式作为web应用中的令牌,用于各方之间以JSON对象安全的传输信息,现在项目中主要使用的还是授权,接口访问权限的验证。

为什么使用JWT

传统的认证方式session

session的工作原理:

  1. 用户第一次请求服务器时,服务器端会生成一个sessionid
  2. 服务器端将生成的sessionid返回给客户端,通过set-cookie
  3. 客户端收到sessionid会将它保存在cookie中,当客户端再次访问服务端时会带上这个sessionid
  4. 当服务端再次接收到来自客户端的请求时,会先去检查是否存在sessionid,不存在就新建一个sessionid重复1,2的流程,如果存在就去遍历服务端的session文件,找到与这个sessionid相对应的文件,文件中的键值便是sessionid,值为当前用户的一些信息
  5. 此后的请求都会交换这个 Session ID,进行有状态的会话。

由上显而易见的就能看出session的弊端:

  1. 若是大量用户,则会在服务器端生成大量session会话,服务器内存吃不消,会造成卡顿
  2. 分布式应用下,每次产生的认证记录只会保存在当前服务器内存中,这样就限制了负载均衡的能力,若想使用还得进行session共享;
  3. 前后端的项目中前端基本上为了解决跨域问题都会使用代理的,这样就是用户一次请求就要转发多次,使用session的话每次都得携带sessionid,服务器还要查询用户信息。
  4. 安全问题,sessionid是存储在cookie中的,cookie被截取的话就会造成跨站攻击
JWT的认证

在这里插入图片描述

  1. 登录页输入账号、密码发送到后端接口;
  2. 后端查数据库进行验证,验证成功后把用户的一些基本信息作为payload(负载),和头部分别进行base64编码,然后拼接后进行签名,形成一个token
  3. 后端将token返回给前端,前端可以将token保存到本地(localstorage),退出登录进行删除保存的jwt
  4. 前端每次请求将jwt放到head中,后端接收后对jwt进行有效验证,若有效进行逻辑访问,否则就直接返回到登录页。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值