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,发送至服务端
储存tokentoken分为三部分,由
.
区分前两部分为明文 是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")