利用 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)
相关文章
相关标签/搜索