交流群:462197261站长百科站长论坛热门标签收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
点击这里给我发消息
  • 当前位置:
  • express + jwt + postMan验证实现持久化登录

    原理

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

    接收到数据

    得到token

    登录持久化验证

    把 token 写入header

    // 登录持久化验证接口 访问这个接口的时候 一定要访问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"
       })
      }
     })
    })

    已有登录账号,持久化登录成功

    设置登录过期时间

    token:jwt.sign({username:decode.username},'abcd',{
     // 如果过期时间为1秒
     expiresIn:"1s"
    })

    获得 token

    设置头部信息

    验证 过期时间生效

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持北冥有鱼。

    您可能感兴趣的文章:

    • vue+express+jwt持久化登录的方法
    • express框架中使用jwt实现验证的方法

    广而告之:
    热门推荐:
    javascript中break,continue和return语句用法小结

    由于最近一直在看javascript,下面简要说一下它们三个在javascript的一些用法 break语句: break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合···

    Vue调试神器vue-devtools安装方法

    什么是vue-devtools? vue-devtools是一款基于chrome游览器的插件,用于调试vue应用,这可以极大地提高我们的调试效率。接下来我们就介绍一下vue-devtools的安装。 安装方式 1.chrome商店直接安装: vue-devtools可以从chrome商店直接下载安装,非常简单,这里就不过多介···

    浅谈PHP安全防护之Web攻击

    SQL注入攻击(SQL Injection) 攻击者把SQL命令插入到Web表单的输入域或页面请求的字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。 常见的SQL注入式攻···

    Oracle数据库并行查询出错的解决方法

    Oracle的并行查询是使用多个操作系统级别的Server Process来同时完成一个SQL查询,本文讲解Oracle数据库并行查询出错的解决方法如下: 1、错误描述 ORA-12801: 并行查询服务器P007中发出错误信号 ORA-01722:无效数字 12801.00000 -"error signaled in parallel query server %···

    在myeclipse中如何加入jquery代码提示功能

    一、 在myeclipse中加入jquery代码提示功能(spket是一个写JS的插件) 1、 打开myeclips-windows-preference找到”spket”单击“javaScript Profiles” 2、 单击“New”输入“jquery”,然后单击“Add library”选择“jquery” 3、 单击“Add files”,将jquery.js加入到里面,然后将jqu···

    JSON PHP中,Json字符串反序列化成对象/数组的方法

    如下所示: <?php //php反编码解析json信息 //json_decode(json字符串); $city = array('shandong'=>'jinan','henan'=>'zhengzhou','hebei'=>'shijiazhuang'); $jn_city = json_encode($city); //反编码json $fan_city = json_decode($jn_city,false);//第二···

    JS+CSS实现鼠标滑过时动态翻滚的导航条效果

    本文实例讲述了JS+CSS实现鼠标滑过时动态翻滚的导航条效果。分享给大家供大家参考。具体如下: 这是一款鼠标悬停时动态翻滚的导航条,注意这里用了两个背景图,请等待网页加载完成或多刷新几次,这个是使用JavaScript实现的,不过代码好像是从jQuery里摘出来的,有点像。 运行···

    Win10下为VSCode配置LaTex编辑器的方法

    任务描述     写小论文的利器是什么呢?LaTex!写代码的利器是什么呢?VSCode!好,那么如何在VSCode上配置LaTex环境呢,以及配置之后,如何选择编译的方式呢?大部分博客只说如何配置,却不说如何编译,导致在编译的过程中总是报错,本文就详细的讲一下这两点。 配···

    从image/x-png谈ContentType(s)

    也因此造成了上传不了png文件的原因(后来看了资料才知道我找错了注册表的位置)。经过自己测试,得出的结果如下:       IE6       IE 8.0  Chrome   Firefox png image/x-png ···

    JS实现图片居中悬浮效果

    这篇文章我们是用JS实现一个图片悬浮的效果,在我们用鼠标下拉滚动的时候图片居中悬浮,不跟随滚动,我们先来看下效果图: 下面我们来看下所有测试过的代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t···