1.工作流程
–>用户登录,服务器产生一个token(加密字符串)发送给前端,
–>前端将token保存(想存哪就存哪)
–>前端发起数据请求时携带token
–>服务端验证token是否合法,合法继续操作,不合法终止操作
2.安装使用
安装
npm install jsonwebtoken --save
引入
const jwt = require('jsonwebtoken');
1.生成token
方法:sign
作用:生成token
使用:jwt.sign(object,keys,{ expiresIn: 20 })
第一个是要加密保存的数据(一个对象,不要放隐秘性的数据,如密码),他的key不能加引号,
第二个是要加密的私钥(一个字符串,越乱越好),
第三个参数是option,这里表示token的有效期
第三个参数扩展
algorithm:加密算法(默认值:HS256)
expiresIn:以秒表示或描述时间跨度zeit / ms的字符串。如60,"2 days","10h","7d",Expiration time,过期时间
notBefore:以秒表示或描述时间跨度zeit / ms的字符串。如:60,"2days","10h","7d"
audience:Audience,观众
issuer:Issuer,发行者
jwtid:JWT ID
subject:Subject,主题
noTimestamp
header
let token=jwt.sign({user:'123'},'123114655sad46aa');
//token 返回的是一个加密字符串
2.验证token
方法:verify
作用:验证token,解密
使用:jwt.verify(token,keys,callkack)
第一个参数token是客户端用户发送过来的;
第二个参数服务端生成token时的keys;
第三个参数是方法
//客户端传递过来的token
let tokens=客户端传递过来的token,从请求头中获取request.body;
jwt.verify(tokens,'123114655sad46aa',function (err,data) {
console.log(err);//签名通过返回null,签名不通过返回err(JsonWebTokenError: invalid signature)
console.log(data);// 通过返回解密数据,失败返回unfinished
});