express + jwt + postMan验证 实现持久化登陆

原理

第一次登录时会返回一个通过加密的token,下一次访问接口(携带登陆返回你的token)的时候,会对token进行解密,若是解密正在进行,说明你已经登陆,再把过时时间延长

下载

npm init -y  // 一键初始化
npm install express -s  // 下载express
npm install cors  // 跨域中间件
npm install body-parser  // body-parser中间件 解析带请求体的数据(post,put)
npm install jsonwebtoken  // 持久化登陆 jwt json web token

基本配置

// 引入express
let express = require('express')
let cors = require('cors')
let bodyParser = require('body-parser')
let jwt = require("jsonwebtoken")

// 拿到服务器
let app = express()

app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:false}))

// listen 后面跟着的是端口
app.listen(8000,function(){
    console.log('OK')
})

模拟一个登录的接口

app.post('/login',function(req,res){
    let {username} = req.body
    console.log(username)
    res.json({
        // 进行加密的方法
        // sing 参数一:加密的对象 参数二:加密的规则 参数三:对象
        token:jwt.sign({username:username},'abcd',{
            // 过时时间
            expiresIn:"1h"
        }),
        username,
        code:200
    })
})

postMan模拟 发送POST请求前端

postMan模拟 发送POST请求

接收到数据web

接收到数据

获得tokenexpress

获得token

登陆持久化验证

把 token 写入headernpm

把 token 写入header

// 登陆持久化验证接口 访问这个接口的时候 必定要访问token(前端页面每切换一次,就访问一下这个接口,问一下我有没有登陆/登录过时)
// 先访问登陆接口,获得token,在访问这个,看是否成功
app.post('/validate',function(req,res){
    // 访问 token
    let token = req.headers.authorization;
    // console.log(token)
    // 验证token合法性 对token进行解码,解码方式要和加密方式同样
    jwt.verify(token,'abcd',function(err,decode){
        if(err){
            res.json({
                msg:'当前用户未登陆'
            })
        }else {
            // 证实用户已经登陆
            res.json({
                username:decode.username,
                msg:'已登陆'
            })
            token:jwt.sign({username:decode.username},'abcd',{
                // 过时时间
                expiresIn:"1h"
            })
        }
    })
})

已有登陆帐号,持久化登陆成功json

已有登陆帐号

设置登陆过时时间

token:jwt.sign({username:decode.username},'abcd',{
    // 若是过时时间为1秒
    expiresIn:"1s"
})

得到 token跨域

得到 token

设置头部信息服务器

设置头部信息

验证 过时时间生效app

验证

相关文章
相关标签/搜索