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 相关文章推荐
Firefox outerHTML实现代码
Jun 04 Javascript
jquery 1.3.2 IE8中的一点点的小问题解决方法
Jul 10 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
Apr 18 Javascript
Node.js模拟浏览器文件上传示例
Mar 26 Javascript
JavaScript判断是否为数字的4种方法及效率比较
Apr 01 Javascript
JS实现slide文字框缩放伸展效果代码
Nov 05 Javascript
Bootstrap Chart组件使用教程
Apr 28 Javascript
jQuery Pagination分页插件使用方法详解
Feb 28 Javascript
jquery实现图片上传前本地预览
Apr 28 jQuery
Vue学习笔记进阶篇之vue-cli安装及介绍
Jul 18 Javascript
vue实现的下拉框功能示例
Jan 29 Javascript
使用JavaScript解析URL的方法示例
Mar 01 Javascript
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
新闻分类录入、显示系统
2006/10/09 PHP
php用户注册时常用的检验函数实例总结
2014/12/22 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
vue之延时刷新实例
2019/11/14 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
wxPython使用系统剪切板的方法
2015/06/16 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Python3数字求和的实例
2019/02/19 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
土木工程专业自荐信
2013/10/04 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
12岁生日感言
2014/01/21 职场文书
高中军训第一天感言
2014/03/06 职场文书