jwt 鉴权
json web token是为了在⽹络应⽤环境间传递声明⽽执⾏的⼀种基于JSON的开放标准
一、输入用户名密码登录,将用户名和密码传给后端验证,验证成功后根据**生成 token(两处明文和一处密文)将token返还给前端
生成token需要用到
jsonwebtoken模块,该模块不需要app.use()
引入:const jwt = require("jsonwebtoken");
生成token:jwt.sign()有三个参数
参数1:对象(可以进行简单的数据信息传递)
参数2:当前的**/密码
参数3:token的时效性
二、前端接收到token后进行客户端存储; 获取到token后请求头部携带token,发送至服务端
储存token
token分为三部分,由
.区分前两部分为明文 是base64的编码 第三部分是密文
第一部分是头部信息
组成:typ类型 /alg加密方式(默认是HS256)
第二部分paload:是字段中的内容,存放自定义信息
组成:iss: 该JWT的签发者
sub: 该JWT所⾯向的⽤户
aud: 接收该JWT的⼀⽅
exp(expires): 什么时候过期,这⾥是⼀个Unix时间戳
iat(issued at): 在什么时候签发的
第三部分signature 是密码请求头部的携带token:
xhr.setRequestHeader("Authorization","Bearer "+token)Bearer和token进行拼接时,中间一定要加一个空格!!!!!!!!!!!!
三、服务端验证token,如果验证通过则返还数据,如果验证不通过则返回401
验证token需要使用koa-jwt模块,该模块不需要app.use()
引入:const koajwt = require("koa-jwt")