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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM