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


Posted in Javascript onJune 05, 2019

原理

第一次登陆时会返回一个经过加密的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请求

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验证实现持久化登录

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

Javascript 相关文章推荐
javascript 24小时弹出一次的代码(利用cookies)
Sep 03 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
jquery ready函数、css函数及text()使用示例
Sep 27 Javascript
JavaScript中判断函数、变量是否存在
Jun 10 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
Jun 07 Javascript
vue实现表格增删改查效果的实例代码
Jul 18 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
May 22 Javascript
javascript异步处理与Jquery deferred对象用法总结
Jun 04 jQuery
前后端常见的几种鉴权方式(小结)
Aug 04 Javascript
JavaScript相等运算符的九条规则示例详解
Oct 20 Javascript
javascript实现移动端上传图片功能
Aug 18 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
Vue实现微信支付功能遇到的坑
Jun 05 #Javascript
JS实现数组删除指定元素功能示例
Jun 05 #Javascript
vue实现PC端录音功能的实例代码
Jun 05 #Javascript
vue-cli3添加模式配置多环境变量的方法
Jun 05 #Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
Jun 05 #Javascript
js实现随机8位验证码
Jul 24 #Javascript
Vue中全局变量的定义和使用
Jun 05 #Javascript
You might like
三种php连接access数据库方法
2013/11/11 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
vue interceptor 使用教程实例详解
2018/09/13 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
python基于queue和threading实现多线程下载实例
2014/10/08 Python
跟老齐学Python之编写类之三子类
2014/10/11 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
python实战教程之自动扫雷
2018/07/13 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
简单了解python中的与或非运算
2019/09/18 Python
Python实现打印实心和空心菱形
2019/11/23 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
Laravel中Kafka的使用详解
2021/03/24 PHP
《充气雨衣》教学反思
2014/04/07 职场文书
三潭印月的导游词
2015/02/12 职场文书
务工证明怎么写
2015/06/18 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js