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 相关文章推荐
JQuery+CSS提示框实现思路及代码(纯手工打造)
May 07 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
Aug 20 Javascript
浅谈node.js中async异步编程
Oct 22 Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
Feb 12 Javascript
详解vue父子组件间传值(props)
Jun 29 Javascript
原生js获取left值和top值的三种方法
Aug 02 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
Aug 04 Javascript
二维码图片生成器QRCode.js简单介绍
Aug 18 Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
Element el-button 按钮组件的使用详解
Feb 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
JavaScript获取Url里的参数
2014/12/18 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
Python动态加载模块的3种方法
2014/11/22 Python
python开发之文件操作用法实例
2015/11/13 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
python实现k-means聚类算法
2018/02/23 Python
python单例模式实例解析
2018/08/28 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
意大利一家专营包包和配饰的网上商店:Borse Last Minute
2019/08/26 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
药品质量检测应届生求职信
2013/11/14 职场文书
新护士岗前培训制度
2014/02/02 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
义诊活动总结
2015/02/04 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL