相思资源网 Design By www.200059.com
原理
第一次登陆时会返回一个经过加密的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
设置头部信息
验证 过期时间生效
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相思资源网 Design By www.200059.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
相思资源网 Design By www.200059.com
暂无express + jwt + postMan验证实现持久化登录的评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。