最新要闻
- 最新快讯!40万级乱杀!全新国产奔驰GLC配置曝光:四款车型、两种外观
- 全球焦点!Gamerant赞《黑神话·悟空》:虚幻5打造《西游记》传说值得期待
- 天天要闻:这外观似曾相识!荣耀Magic 5 Lite曝光:后置圆环三摄
- 全球快看:《狂飙》爆火出圈!《孙子兵法》登顶淘宝热搜 发货要等25天
- 男子2月没摘隐形眼镜:镜片长到眼球上
- 每日信息:对标三星索尼!SK海力士重组CMOS图像传感器团队
- 天天微头条丨网友吐槽美国医院3小时拔不出一根鱼刺 急诊那是真不急
- 全球微资讯!耶路撒冷老城千年护城河道惊现神秘手印 专家:或为工人恶作剧
- 最新快讯!立减40元:露得清氨基酸洗面奶19.9元到手 男女通用
- 世界看热讯:5G四足机器人“入职”中国电信核心机房:支持自主巡航 360度旋转夜视
- 猛禽之王!摄影爱好者抓拍到金雕展翅抓羊场面:超震撼
- 全球今亮点!《狂飙》爆火后 《孙子兵法》解析成微信读书飙升榜第一名
- 天际汽车刹车失灵 故障不断!车主售后找不到人
- 当前资讯!雷蛇宣布2月2日发布新品:或为毒蝰系列新品
- 72G《英雄联盟》源代码被盗 拳头游戏拒绝打钱 黑客:100万美元起拍
- 多地现宰客乱象 央视评宰客事件:“一锤子买卖”?
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【环球热闻】记录--Vue PC前端扫码登录
【资料图】
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助
需求描述
目前大多数PC端应用都有配套的移动端APP,如微信,淘宝等,通过使用手机APP上的扫一扫功能去扫页面二维码图片进行登录,使得用户登录操作更方便,安全,快捷。
思路解析
PC 扫码原理?
扫码登录功能涉及到网页端、服务器和手机端,三端之间交互大致步骤如下:
- 网页端展示二维码,同时不断的向服务端发送请求询问该二维码的状态;
- 手机端扫描二维码,读取二维码成功后,跳转至确认登录页,若用户确认登录,则服务器修改二维码状态,并返回用户登录信息;
- 网页端收到服务器端二维码状态改变,则跳转登录后页面;
- 若超过一定时间用户未操作,网页端二维码失效,需要重新刷新生成新的二维码。
前端功能实现
如何生成二维码图片?
- 二维码内容是一段字符串,可以使用uuid 作为二维码的唯一标识;
- 使用qrcode插件 import QRCode from "qrcode"; 把uuid变为二维码展示给用户
import {v4 as uuidv4} from "uuid"import QRCode from "qrcodejs2" let timeStamp = new Date().getTime() // 生成时间戳,用于后台校验有效期 let uuid = uuidv4() let content = `uid=${uid}&timeStamp=${timeStamp}` this.$nextTick(()=> { const qrcode = new QRCode(this.$refs.qrcode, { text: content, width: 180, height: 180, colorDark: "#333333", colorlight: "#ffffff", correctLevel: QRCode.correctLevel.H, render: "canvas" }) qrcode._el.title = ""
如何控制二维码的时效性?
使用前端计时器setInterval, 初始化有效时间effectiveTime, 倒计时失效后重新刷新二维码
export default { name: "qrCode", data() { return { codeStatus: 1, // 1- 未扫码 2-扫码通过 3-过期 effectiveTime: 30, // 有效时间 qrCodeTimer: null // 有效时长计时器 uid: "", time: "" }; }, methods: { // 轮询获取二维码状态 getQcodeStatus() { if(!this.qsCodeTimer) { this.qrCodeTimer = setInterval(()=> { // 二维码过期 if(this.effectiveTime <=0) { this.codeStatus = 3 clearInterval(this.qrCodeTimer) this.qrCodeTimer = null return } this.effectiveTime-- }, 1000) } }, // 刷新二维码 refreshCode() { this.codeStatus = 1 this.effectiveTime = 30 this.qrCodeTimer = null this.generateORCode() } },
前端如何获取服务器二维码的状态?
前端向服务端发送二维码状态查询请求,通常使用轮询的方式
- 定时轮询:间隔1s 或特定时段发送请求,通过调用setInterval(), clearInterval()来停止;
- 长轮询:前端判断接收到的返回结果,若二维码仍未被扫描,则会继续发送查询请求,直至状态发生变化(失效或扫码成功)
- Websocket:前端在生成二维码后,会与后端建立连接,一旦后端发现二维码状态变化,可直接通过建立的连接主动推送信息给前端。
使用长轮询实现:
// 获取后台状态 async checkQRcodeStatus() { const res = await checkQRcode({ uid: this.uid, time: this.time }) if(res && res.code == 200) { let codeStatus - res.codeStatus this.codeStatus = codeStatus let loginData = res.loginData switch(codeStatus) { case 3: console.log("二维码过期") clearInterval(this.qrCodeTimer) this.qrCodeTimer = null this.effectiveTime = 0 break; case 2: console.log("扫码通过") clearInterval(this.qrCodeTimer) this.qrCodeTimer = null this.$emit("login", loginData) break; case 1: console.log("未扫码") this.effectiveTime > 0 && this.checkQRcodeStatus() break; default: break; } } },
本文转载于:
https://juejin.cn/post/7179821690686275621
如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。
【环球热闻】记录--Vue PC前端扫码登录
[概率论与数理统计]笔记:4.4 抽样分布
当前速讯:1.29数论课笔记
最新快讯!40万级乱杀!全新国产奔驰GLC配置曝光:四款车型、两种外观
全球焦点!Gamerant赞《黑神话·悟空》:虚幻5打造《西游记》传说值得期待
天天要闻:这外观似曾相识!荣耀Magic 5 Lite曝光:后置圆环三摄
全球快看:《狂飙》爆火出圈!《孙子兵法》登顶淘宝热搜 发货要等25天
男子2月没摘隐形眼镜:镜片长到眼球上
焦点日报:时区介绍
前沿热点:Matlab导入多个.mat文件进行画图
每日信息:对标三星索尼!SK海力士重组CMOS图像传感器团队
天天微头条丨网友吐槽美国医院3小时拔不出一根鱼刺 急诊那是真不急
全球微资讯!耶路撒冷老城千年护城河道惊现神秘手印 专家:或为工人恶作剧
最新快讯!立减40元:露得清氨基酸洗面奶19.9元到手 男女通用
世界看热讯:5G四足机器人“入职”中国电信核心机房:支持自主巡航 360度旋转夜视
乘法逆元
今日看点:C++11简易线程池实现
002-dockerfile部署java项目
当前观点:springboot~openfeign开启熔断之后MDC为null的理解
焦点播报:WebAPI_DAY1
猛禽之王!摄影爱好者抓拍到金雕展翅抓羊场面:超震撼
全球今亮点!《狂飙》爆火后 《孙子兵法》解析成微信读书飙升榜第一名
天际汽车刹车失灵 故障不断!车主售后找不到人
当前资讯!雷蛇宣布2月2日发布新品:或为毒蝰系列新品
72G《英雄联盟》源代码被盗 拳头游戏拒绝打钱 黑客:100万美元起拍
焦点要闻:关于pacemaker中资源启动的位置条件约束Location Constraints
【天天快播报】Codeforces Round #847 (Div. 3) ABCDE
焦点滚动:win32com操作word API精讲 第八集 Range和Selection的区别
多地现宰客乱象 央视评宰客事件:“一锤子买卖”?
【世界新要闻】明年的苹果iPad Pro将是重头戏!屏幕、后盖全都升级了
50只独立包装 超亚儿童N95医用防护口罩47.9元
全球热文:比亚迪:研发团队目前已覆盖各个电池技术路线
精选!无岳不成村!山东有个公交站叫“满江红” :住着岳飞后代
视焦点讯!《云管理服务白皮书》总结
【网关开发】7.Openresty使用cosocket API 发送http与tcp网络请求
美语发音【总结】
以前票房反超了会画海报恭喜对方:《满江红》却冷嘲热讽
全球今热点:碾压对手!OPPO Find X6工程机亮相:标准版都有潜望长焦
谷歌裁员细节曝光:开源主管被裁 61岁程序员在线求职
10分拉满!IGN发布《流浪地球2》影评:超越国际一流水准
环球新动态:全网音乐免费下载,音乐下载工具,音乐免费下载mp3格式,音乐下载器,小说下载,小说阅读,磁力链接聚合搜索,每日美女壁纸,如何免费下载想听的音乐或小说
天天日报丨【算法训练营day29】LeetCode491. 递增子序列 LeetCode46. 全排列 LeetCode47. 全排列II
关于前端低代码的一些看法
奔驰车主扔钱加油大姐捡钱偷抹泪引热议 当事人回应:网友愤怒素质差到家
动态焦点:蹭热度有风险 电商老店使用流浪地球标识遭索赔15万
当前速讯:海外观众热评《流浪地球2》:中国科幻片惊艳 比全球票房第四《阿凡达2》好看
要买的抓紧了!宝马将于2月起涨价:最高2万元
世界观天下!21岁男子撞车后向27岁“叔叔”道歉 车主果断索赔
【报资讯】骁龙778G还能再战!荣耀50/60系列获MagicOS 7.0升级
每日消息!博主赞特斯拉研发支出巨大:比亚迪、奔驰、理想都比不过
5支39.9元超划算:高露洁牙膏多效护理实惠家庭装套大促
Python工具箱系列(二十三)
天天观速讯丨JavaScript 条件判断与比较运算
环球热推荐:Python 的垃圾回收机制【译】
世界观焦点:Java 如何高亮 Excel 中低于或高于平均值的单元格
每日时讯!一加11同款!一加Ace 2外观首曝:环形镜头设计
全球资讯:春节假期后全国大部地区气温回升:南方最高可达20度 暖如春分
全球播报:生日蛋糕网店使用“流浪地球”标识 遭中影索赔15万
不是云南也不是海南!四川春节游客接待量全国第一
全球观焦点:吉利真会玩儿:汽车挡风玻璃上实现烟花秀
sacai是什么牌子?sacai有中国官网吗?
孑孓的读音是什么?孑孓是什么意思?
手机水货是什么意思?手机水货和行货有什么区别?
木棉花的春天大结局是什么?木棉花的春天全部演员表
绿芜是谁演的?绿芜为什么投河自尽?
电脑出现报警声是怎么回事?电脑出现报警声怎么解决?
松下电饭煲质量怎么样?松下电饭煲怎么调时间?
【环球聚看点】指向立体星(随便起的名)的建立与使用
小米2a手机是什么系统?小米2A手机充电保护怎么打开?
诺基亚210什么时候上市的?诺基亚210手机参数
戴尔的台式机怎么进入bios?戴尔台式机开不了机怎么办?
跑2500公里高速 踩着最后几秒过收费站:女子直呼惊险刺激
今日最新!流浪地球2原来是在青岛流浪 流亭机场戏份最多
全球观察:1:1真机开模!绿联iPhone钢化膜新年大促:2片到手5.22元起
外卖小哥过年3天赚2695元:年三十到初二上班不回家
环球关注:新一代宝马X1或将3月上市:尺寸再加长、堪比大哥X3
flash8.ocx或其附件之一不能正确注册
【全球速看料】Linux下docker安装部署
当前通讯!芬兰一动物园拟送大熊猫回中国:缺钱养不了
环球今头条!微软逼你升级Win11?Windows 10 ISO等正常下载
门店329元 361° 云翎运动鞋89元到手:2.7折
当前最新:中国科学家打造“类真人皮肤”:受伤1小时完全愈合
全球通讯!特斯拉强推“单踏板”遭吐槽 博主直言:价值观、是非观畸形
环球热门:读Java8函数式编程笔记04_类库
精彩看点:PHP反序列化新手入门学习总结
k8s~fluentd从kafka到elk
天天日报丨《满江红》官方连续发文回应争议扩散:统编教材删除岳飞满江红?从未选编
【天天新要闻】国内还有人看吗?漫威超英大片《黑豹2》被偷跑:1080p高清版流出
【世界快播报】卖价6.5亿 全球订单超1035架:国产大飞机C919有望3月载客飞行
今热点:评分不断下跌 电影《满江红》起诉4位微博大V 复旦教授回应
票房超24亿 中国科幻片里程碑!郭帆回应《流浪地球3》:放心了 喜欢接着拍
世界信息:博客主题 Lite
《满江红》票房超29亿!游客排长队打秦桧雕像:大妈亮出鞋底猛抽
无人机革命!麻省理工学院开发出超低噪音螺旋桨
【全球时快讯】node借助jsonwebtoken生成token以及验证token是否过期
真着急!中国显卡厂商首次曝光RTX 4060、RTX 4050
当前动态:有航司开33万高薪急招空乘:送八险二金、1.5年单身公寓
天天新资讯:《熊出没》系列电影累计票房超50亿!观众看《深海》突遇屋顶漏水
当前资讯!MySQL笔记01: MySQL入门_1.3 MySQL启动停止与登录
环球即时:手把手教你搭建mongodb分片集群