token 令牌完整介绍及使用

介绍

举个例子:比如你想去公园,这个 token 就相当于门票,你只有拿着这个门票才能进去

一般用在前后端分离开发

一个加密以后的字符串,该字符串可以被反编译

  • 反编译就是加完密之后还可以解开
  • 只不过这里的解开需要一把钥匙的(key)

执行流程

  1. 当用户登陆完成之后,服务端会生成一个令牌。并将令牌返回给前端
  2. 前端得到令牌之后将其保存。
  3. 当调用敏感的接口时,需要传递token.
  4. 服务端会对token进行验证。

存储的是什么?

一般存储着个人信息,过期时间

  • 等你再次访问比较敏感的接口的时候,把令牌交给服务器端,服务器端对其进行解析,解析完就可以得到令牌当中的 个人信息和过期时间
  • 前端得不到 个人信息和过期时间,前端只能得到一个令牌,你对这个令牌不能够解析,只有服务器端可以。
  • 前端为什么不可以?因为前端没有秘密可言,像那种比较复杂的算法是不会放在前端的,因为前端右键源码就可以看的到
  • 用户每次登录的时候都会生成一个新的令牌

验证的具体流程

  1. 验证token是否正确
    1. 正确。
      验证token是否过期。
      1. 过期:返回过期信息给前端。前端让其自动退出
      2. 未过期:继续执行。
    2. 不正确。返回异常。前端让其自动退出。

token生成以及使用

  1. 下载模块 JWT–JSON web token
    • 在你的服务器端
    • 比如你写后端接口的那个地方,在同一个地址里面下载
    - cnpm install jwt-simple -S
  1. 引入
    const jwt = require("jwt-simple");
  1. 生成
    jwt.encode(payload,key);  //第一个参数是你要荷载的内容 payload
  • 一般包含个人信息和过期时间
const key = "sadawidha9dahd"
const token = jwt.encode({
   	admin:"zhangsan",      //个人信息
   	createTime:Data.now()  //生成时间
	}
	,key); 
  1. 解析
    jwt.decode(token,key);   //
    const info = jwt.decode(token,key);   //这个 info 就是你解析的内容,内容就是你荷载的信息
  • 在调用私密接口时使用。

如何判断 token 是否过期

  • 出在解析这个地方
  • 在生成的时候我们生成一个时间
  • 那么我使用这个生成时间的话 info.createTime
  • 既然知道生成时间,再和当前的时间进行比较
  • 当前时间 - createTime = 间隔时间
    const info = jwt.decode(token,key);   //这个 info 就是你解析的内容,内容就是你荷载的信息
    const nowTime= Date.now();  //当前时间
    
    if((nowTime-info.createTime) > 100*60*1000){
    console.log("过期啦")
    }else{
    console.log("正常")
发布了74 篇原创文章 · 获赞 7 · 访问量 2201

猜你喜欢

转载自blog.csdn.net/qq_44163269/article/details/105353179