乐趣区

利用-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)
退出移动版