Json Web Token 介绍与使用

一、我们先解释一下他的含义:

  1.  Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
  2. Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
  3. 使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮,多次携带用户账号密码有可能导致用户信息泄露的风险。

 

二、Json Web Token是干什么(简称JWT,在HTTP通信过程中,进行身份认证。)

    我们知道HTTP通信是无状态的,因此客户端的请求到了服务端处理完之后是无法返回给原来的客户端。因此需要对访问的客户端进行识别,常用的做法是通过session机制:客户端在服务端登陆成功之后,服务端会生成一个sessionID,返回给客户端,客户端将sessionID保存到cookie中,再次发起请求的时候,携带cookie中的sessionID到服务端,服务端会缓存该session(会话),当客户端请求到来的时候,服务端就知道是哪个用户的请求,并将处理的结果返回给客户端,完成通信。
    

通过上面的分析,可以知道session存在以下问题:

  1. session保存在服务端,当客户访问量增加时,服务端就需要存储大量的session会话,对服务器有很大的考验;
  2. 当服务端为集群时,用户登陆其中一台服务器,会将session保存到该服务器的内存中,但是当用户的访问到其他服务器时,会无法访问,通常采用缓存一致性技术来保证可以共享,或者采用第三方缓存来保存session,不方便。

 


三、Json Web Token是怎么做的?

  1. 客户端通过用户名和密码登录服务器;
  2. 服务端对客户端身份进行验证;
  3. 服务端对该用户生成Token,返回给客户端;
  4. 客户端将Token保存到本地浏览器,一般保存到cookie中;
  5. 客户端发起请求,需要携带该Token;
  6. 服务端收到请求后,首先验证Token,之后返回数据。
  7. 服务端不需要保存Token,只需要对Token中携带的信息进行验证即可;
  8. 无论客户端访问后台的那台服务器,只要可以通过用户信息的验证即可。

 


四、Json Web Token长什么样子呢?

通过名字就可以看出来,是一个json。

由三部分内容组成:

头(header),一般很少改动直接使用默认的即可:

{
    'typ':'JWT',
    'alg':'HS256'
}

 肚子(playload),东西都装在肚子里,默认的内容有:

{
  'iss':'签发者',
  'sub':'面向的用户',
  'aud':'接收方',
  'exp':  过期时间,
  'iat':  创建时间,
  'nbf':  在什么时间之前,该Token不可用,
  'jti':'Token唯一标识'
}

根据需要用户可以自己定义,Token中传输的内容,一般会将用户名,角色等信息放到Token中。      

尾(signature),前面两部分转为字符串后,使用base64编码,然后进行加密得到一个字符串。

Token = 头(base64)+ 肚子(base64)+ 尾;

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值