首页 > 开发 > JS > 正文

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

2024-05-06 16:51:50
字体:
来源:转载
供稿:网友

原理

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

下载

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

基本配置

// 引入expresslet 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请求

express,jwt,postMan,持久化登录

接收到数据

express,jwt,postMan,持久化登录

得到token

express,jwt,postMan,持久化登录

登录持久化验证

把 token 写入header

express,jwt,postMan,持久化登录

// 登录持久化验证接口 访问这个接口的时候 一定要访问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"   })  } })})

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

express,jwt,postMan,持久化登录

设置登录过期时间

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

获得 token

express,jwt,postMan,持久化登录

设置头部信息

express,jwt,postMan,持久化登录

验证 过期时间生效

express,jwt,postMan,持久化登录

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


注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表