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 相关文章推荐
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
Apr 21 Javascript
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
jQuery Study Notes学习笔记 (二)
Aug 04 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
Dec 07 Javascript
基于JavaScript怎么实现让歌词滚动播放
Nov 03 Javascript
js实现人民币大写金额形式转换
Apr 27 Javascript
用原生js统计文本行数的简单示例
Aug 19 Javascript
angularjs项目的页面跳转如何实现(5种方法)
May 25 Javascript
深入理解Vue 的条件渲染和列表渲染
Sep 01 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
Jul 29 Javascript
js Math数学简单使用操作示例
Mar 13 Javascript
JavaScript实现手风琴效果
Feb 18 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
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
php实现水仙花数示例分享
2014/04/03 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
javascript 定义初始化数组函数
2009/09/07 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
python交互式图形编程实例(三)
2017/11/17 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
Python3爬楼梯算法示例
2019/03/04 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
大学生求职自荐信范文
2015/03/04 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
民政局未婚证明
2015/06/15 职场文书
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python