node使用jwt来创建token和解析token

一、使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

  1. 客户端使用用户名跟密码请求登录
  2. 服务端收到请求,去验证用户名与密码
  3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

二、JWT

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

JWT是由header(头部)payload(数据)signature(签名)三部分组成,中间用点分隔开,并且都会使用 Base64 编码。

如:

eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc

三、node实例来演示jwt创建token 

(1)建议一个文件夹

(2)用vs code打开该文件夹,在控制台执行npm init 

(3)安装依赖

npm install jsonwebtoken

(4) 引入依赖

const jwt = require('jsonwebtoken')

(5) 创建一个payload 对象,用来存储用户信息

let payload = {
    id:"134567",
    name:"zhangsan"
}

(6) 创建一个签名,即密钥

let seccret = "jwttoken"

(7) 生成token

let token = jwt.sign(payload,seccret,{
    expiresIn:"1h" ,   //到期时间7d(7天) 12h  120=120ms 提供三种单位
    issuer:"zzuly"     //发行人
})

(8) 运行

node token.js

(9) 结果

(10) 解析token

jwt.verify(token,seccret,(error,decoded)=>{
    if(error){
        console.log(error)
        return error
    }
    console.log("校验",decoded)
})

注意:校验失败和token过期都会在执行error。

(11) 效果

四、git地址

git clone https://gitee.com/laingyua/jwtToken.git

 

 

     

 

你可能感兴趣的:(node)