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

设置头部信息

验证 过期时间生效

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

(0)

相关推荐

  • nodejs使用express获取get和post传值及session验证的方法

    本文实例讲述了nodejs使用express获取get和post传值及session验证的方法.分享给大家供大家参考,具体如下: 获取get和post传值 get的传值被放入了一个对象中 req.query post的传值被放入了 req.body 获取方式如获取对象的内容方式一样.比如,前面传入了一个id的值,nodejs获取就可以req.body.id即可 express的session验证 第一步安装cookie和session的模块,并引入 var session = require('

  • Vue+Express实现登录状态权限验证的示例代码

    前提 对Vue全家桶有基本的认知. 用有node环境 了解express 另外本篇只是介绍登录状态的权限验证,以及登录,注销的前后端交互.具体流程(例如:前端布局,后端密码验证等).以后有时间再对这些边边角角进行补充 一丶业务分析 1.什么情况下进行权限验证? 访问敏感接口 前端向后端敏感接口发送ajax 后端进行session验证,并返回信息 前端axios拦截返回信息,根据返回信息进行操作 进行页面切换 页面切换,触发vue-router的路由守卫 路由守卫根据跳转地址进行验证,如需权限,则

  • iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容

    何谓正则表达式 正则表达式(regular expression),在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的.正则表达式通常缩写成"regex",单数有regexp.regex,复数有regexps.regexes.regexen. 正则表达式组成 正则表达式有两种类型的字符

  • Express + Session 实现登录验证功能

    1. 写在前面 当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站 ,过一段时间,再次打开这个网站,依然还会是登录状态.这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我们退出登录,或者保存的登录状态过期.那服务器是通过什么存储我们的登录状态的呢? 答案就是 Session ,服务通过 Session 能够记录每个客户端连接的状态.关于 Session 的原理,在这就不多说了,本文主要介绍在 Express 框架中,如何使用 Session 来实现用户登录身份验证.

  • DevExpress实现GridControl单元格编辑验证的方法

    本文实例演示了DevExpress实现GridControl单元格编辑验证的方法,比较实用的功能,具体方法如下: 主要功能代码如下: /// <summary> /// 自定义单元格验证 /// </summary> /// <param name="view">GridView</param> /// <param name="e">BaseContainerValidateEditorEventArgs

  • 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 j

  • vue+express+jwt持久化登录的方法

    jwt 持久化验证前端篇,node 配置详情请移步这里 我用的是vue3,下面是 src 的目录 用到的依赖 验证思路 Home 页写登录,然后在 About 页获取到登录名. 登录成功缓存 token,进入About页时,通过判断是否有 token 来判断是否登录/登录超时 登录页 在登录页输入用户名和密码,将其提交到vuex // src/views/Home.vue <template> <div class="home"> <input type=

  • Java中基于Shiro,JWT实现微信小程序登录完整例子及实现过程

    小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html : 本文是对接微信小程序自定义登录的一个完整例子实现 ,技术栈为 : SpringBoot+Shiro+JWT+JPA+Redis. 如果对该例子比较感兴趣或者觉得言语表达比较啰嗦,可查看完整的项目地址 : https://github.com/EalenXie/shiro-jwt-applet

  • .Net Core官方JWT授权验证的全过程

    什么是JWT? JSON Web令牌(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为JSON对象.由于此信息是经过数字签名的,因此可以被验证和信任.可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对对JWT进行签名. 尽管可以对JWT进行加密以提供双方之间的保密性,但我们将重点关注已签名的令牌.签名的令牌可以验证其中包含的声明的完整性,而加密的令牌则将这些声明隐藏在其他方的面前.当使用公钥/私钥对对令牌进行签名时,

  • golang jwt+token验证的实现

    Token验证是验证用户身份的重要方式,在golang开发中具有广泛应用,文中主要阐述了利用jwt包加密后的token验证. 导入包: import ( "github.com/dgrijalva/jwt-go" ) // GenerateToken 生成Token func GenerateToken(mapClaims jwt.MapClaims, key string) (string, error) { token := jwt.NewWithClaims(jwt.Signin

  • DRF使用simple JWT身份验证的实现

    前言 在Django的前后端分离项目中DRF(Django Restframe Work)框架无疑是首选,关于token验证一般使用的是JWT,但是JWT只支持到Django1.x的版本. 官方推荐Django2.x之后的版本使用simple JWT,官方文档. 登录返回token和refresh user 模型类: 我user模型类继承的是django.contrib.auth.models.AbstractUser,这样可以使用Django自带的认证. 如果继承该类,我们就必须在settin

  • 如何使用会话Cookie和Java实现JWT身份验证

    HTTP是无状态协议,用于传输数据.它启用了客户端和服务器端>之间的通信.它最初是为了在Web浏览器和Web服务器之间建立连接而建立的.比如在网上购物,我们添加一些商品,例如.耳机到我们的购物车,然后,我们继续寻找其他项目,在此期间,我们希望在执行任何其他任务是存储购物车项目的状态且不丢失它们.这意味着我们希望在整个购物过程中记住我们的状态.由于HTTP是无状态协议,因此要克服问题,我们可以使用会话或者令牌 1.基于会话的身份验证 在JSON Web令牌出现之前,我们主要使用这种身份验证.在这种

  • Django中的JWT身份验证的实现

    1.认证与授权 1.验证:身份验证是验证个人或设备标识的过程.身份验证过程之一是登录过程.注册网站后,您的信息(ID,密码,名称,电子邮件等)将存储在其数据库中.之后,您无需创建帐户即可提供信息.相反,您只需要提供用户名和密码来验证您的身份,网站就会自动知道您正在访问. 2.授权:授权是用于确定用户特权或访问级别的安全机制.在许多社区网站上,只有上传帖子和管理员的人才能删除它.当其他人尝试删除帖子时,网站应该抛出错误(但是在许多情况下,他们甚至看不到删除按钮).因此,对于每个请求,用户都需要证明

  • SpringBoot如何实现持久化登录状态获取

    目录 SpringBoot 持久化登录状态获取 1.编写登录的controller文件 2.编写首页Controller逻辑 3.运行测试,成功 SpringBoot 实现登录登出,登录态管理 1.设计表结构 2.controller层 3.创建请求拦截器 4.登出 SpringBoot 持久化登录状态获取 1.编写登录的controller文件 写入cookie //登陆成功后 //...将用户账号信息存入数据库中 //写cookie,(因存入数据库,无需写入session了) respons

  • asp.core 同时兼容JWT身份验证和Cookies 身份验证两种模式(示例详解)

    在实际使用中,可能会遇到,aspi接口验证和view页面的登录验证情况.asp.core 同样支持两种兼容. 首先在startup.cs 启用身份验证. var secrityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["SecurityKey"])); services.AddSingleton(secrityKey); services.AddAuthentication(CookieAut

随机推荐