利用 jwt 配合 postman 實現 持久化登陸

jwt 實現持久化登陸

原理
第一次登陸時會返回一個通過加密的token
下一次訪問接口時(攜帶登陸返回給你的token)會對token進行解密 若是解密正確 證實你已經登陸 再把過時時間延長
// 首先 npm init -y 一鍵初始化
// 引入 express 下載 npm install express
let express = require('express');
let app = express();
// 用於跨域 下載 npm install cors
let cors = require('cors');
// 解析帶請求體(post,put)的數據 下載 npm install body-parser
let bodyParser = require('body-parser');
// 引入 jwt 全稱 json web token 下載 npm install jsonwebtoken
let jwt = require('jsonwebtoken');

// 解析 json 格式
app.use(bodyParser.json())
// 解析 form 格式
app.use(bodyParser.urlencoded({extended:true}))

app.use(cors())

// 進行登陸持久化驗證的接口
// 訪問這個接口時 必定要攜帶 token 前端頁面每切換一次就訪問一下這個接口 問一下我有沒有登陸 或者登陸過時
app.post('/validate',function(req,res){
    let token = req.headers.authorization;
    // 驗證token的合法性
    jwt.verify(token,'sxq',function(err,decode){
        if(err){
            res.json({
                msg:'當前用戶未登陸'
            })
        }else{
            // 證實用戶已經登陸 只要用戶操做就會有過時時間
            res.json({
                username:decode.user,
                token:jwt.sign({username:decode.user},'sxq',{
                    // 過時時間
                    expiresIn:'1h'
                })
            })
        }
    })
})

// 持久化登陸的原理
// 第一次登陸時會返回一個通過加密的token
// 下一次訪問接口時(攜帶登陸返回給你的token)會對token進行解密 若是解密正確 證實你已經登陸 再把過時時間延長
// 模擬一個登陸接口 username password
app.post('/login',function(req,res){
    let {username} = req.body
    res.json({
        // sign 參數 加密的對象 加密的規則 
        token:jwt.sign({username},'sxq',{
            // 過時時間
            expiresIn:'1h'
        }),
        username
    })
})

// 接口
app.listen(3000)
相關文章
相關標籤/搜索