JWT(token) 的使用
1.什么是token
token是一个令牌,是前后端开发时的一个验证工具,(就是一个字符串)
2.token的使用流程
1.前端向后端传递用户名和密码
2.后端将接收到的的用户名和密码进行核实
3.后端核实成功后会,返回给前端一个token(或者直接将token保存在cookie中);
4.前端得到token 并对其进行保存
5.如果前端请求隐私的接口(比如需要登陆后才能查看商品的详细信息),则需要传递保存的token(进行ajax请求时,将信息放在请求头中)
6.后端对其进行验证,如果token错误,则请求不到数据,返回给前端相应的提示 如果token验证正确,则 获取相应的数据,并返回给前端
3.JWT的构成
JWT是由三部分构成,将这三段信息文本用链接构成了JWT字符串, header + payload +secret = 加密的字符串
1.header 头部
2.payload 负载-------写相关的信息
{
user:"签发者",
exp:"token过期时间"//必须大于签发时间
}
3.secret 密钥------用来进行jwt的签发和jwt的验证,它就是你服务端的私钥,在任何场景都不应该流露出去
4.后端JWT的构建
// 1.下载包 npm install jsonwebtoken --save-dev // 2.引入 var JWT = require("jsonwebtoken");
//负载信息 let payload = { user:"sun", // exp:"1000 * 60"//单位 ms } //密钥 let secret = "123456";
//生成token,exporesIn为过期时间,单位:ms/h/days/d eg:1000, "2 days", "10h", "7d" let token= JWT.sign(payload,secret,{expiresIn:"1h"})
//将token保存在cookie中 res.cookie("token",token);
5.前端请求保密性的信息(比如:必须登录后,才能查看商品的详细信息),发送JWT
//获取cookie, var token = $.cookie("token"); //发起ajax请求,将token发送到后端 $.ajax({ type: "get", url: "/goods", //将信息保存在请求头中 headers: { auth: token } })
6.后端验证JWT
//获取前端传来的tokenlet token = req.headers.auth; JWT.verify(token, "密钥", (err, decoded) => { if (err) { //验证失败 //console.log("令牌失效"); res.json({ status:false, info:"令牌失效" }) } else { //验证成功 //获取前端需要的相应数据 //返回给前端相应的信息 res.json({ status:true, info:请求的数据 }) } })
参考:https://www.npmjs.com/package/jsonwebtoken