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

posted @ 2019-02-16 10:55  SRH啦  阅读(2768)  评论(0编辑  收藏  举报