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 相关文章推荐
js和jquery中循环的退出和继续学习记录
Sep 06 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
JavaScript实战(原生range和自定义特效)简单实例
Aug 21 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
Dec 31 Javascript
js实现类bootstrap模态框动画
Feb 07 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
Aug 18 Javascript
angularJS的radio实现单项二选一的使用方法
Feb 28 Javascript
angular中的post请求处理示例详解
Jun 30 Javascript
JavaScript实现无限轮播效果
Nov 19 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脚本引擎内置函数
2007/03/06 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
JS实现字符串翻转的方法分析
2018/08/31 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
Python将一个Excel拆分为多个Excel
2018/11/07 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
内刊编辑求职自荐书范文
2014/02/19 职场文书
夜不归宿检讨书
2014/02/25 职场文书
趣味运动会策划方案
2014/06/02 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL
GPU服务器的多用户配置方法
2022/07/07 Servers