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 banner = require("./banner")

// 拿到服务器

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请求

接收到数据

得到token

登录持久化验证

把 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"

})

}

})

})

已有登录账号,持久化登录成功

设置登录过期时间

token:jwt.sign({username:decode.username},'abcd',{

// 如果过期时间为1秒

expiresIn:"1s"

})

获得 token

设置头部信息

验证 过期时间生效

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 express + jwt + postMan验证实现持久化登录 的全部内容, 来源链接: utcz.com/z/361089.html

回到顶部