微信扫码登录之最简实现
最近开发某应用的PC端后台管理时,突然对登录页面的账号密码还有图片识字验证码感到厌烦了,不仅填写麻烦,要记账号密码也麻烦。为什么不尝试用微信扫码登录呢?功能实现后,我整理出来分享给大家(友情提示:阅读本文需要比较熟悉微信公众号的相关开发,前端框架是基于vue3的element plus,后端是.net6.0 的c# )。本文是针对PC上web应用的登录场景下,实际上我以前做过桌面端wpf程序的微信扫码登录,大致流程和代码也是一样的,也就是说所有客户端显示二维码,让用户扫码登录,处理流程大体是一样,差异只是因为客户端不同,扫码成功后服务端发送登录信息给客户端所采用的推送方式也不同。
一 功能设计描述
在PC上打开后台登陆页,无账号密码录入框,只显示一个二维码。拿出手机微信扫码,手机端显示登录成功的提示,然后pc端的登录页面自动跳转到登录后的下个页面。
二开发前提条件:
作为管理后台,要用微信扫码登录,就表示登录用户在数据库里必须已记录了在自家公众号下的openid。简单说,得有公众号,用户表里得有用户的openid(如何获取可以参考微信公众号开发文档),因为如何建立后台管理用户大家都各有各的做法,我这里就很简单,发个链接给用户微信,让他点开获取微信身份授权后,再填入他在管理后台的账号密码,连同微信授权code一起发到服务端即可。接口地址必须在公众号的授权回调域中配置好。更详细内容请参考微信公众号开发的网页授权部分。
三 程序流程设计
登陆页面初始化,生成随机字符串sessionid, 二维码链接带上sessionid ,当用微信扫二维码时,服务端获得用户微信openid进而通过openid找到用户,核查合法后把用户信息和sessionid一起写入缓存。anxios则用sessionid作为参数查询服务端的登录结果,服务端则从缓存读取该sessionid的登录信息返回给客户端,客户端获得登录信息后存在本地并跳转主页,这是大致的流程。
由于扫码成功后,登录页面需要自动完成登录过程,这里就涉及了一个web开发常见的问题-推送,即扫码后服务端需要主动把登录结果发送给登录页面。本着用最简单方式实现的目的,我这里就是直接就用axios发一个正常请求,然后把 connect timeout参数设置大一点,我打算通过服务端hold住线程轮询数据来实现。当然更完美一点的方案,就是用settimeout之类让请求轮询执行,或者长轮询,或者使用websocket等方法,因篇幅限制,不展开细讲。
1 客户端 登录页面vue代码,我过滤了ui样式以及细节处理的代码,就是一个显示二维码的vue组件vue-qr,页面初始化生成一个sessionid,拼在一个服务端接口地址上,形成二维码组件的链接。页面初始化同时也用sessionid发起查询登录结果请求。 请使用微信扫码登录
2 服务端查询登录结果接口代码,因为逻辑相对简单,所以我先讲这个。简单描述就是收到客户端请求后,用sessionid查询缓存,用每隔2秒轮询查询,一直到查到有结果才返回客户端。客户端收到登录结果就进行下一步处理。 /// /// 返回登录结果 /// /// 客户端sessionid /// [EnableCors] [HttpGet] [AllowAnonymous] public object CheckLogin(string sessionId) { var loginResult = Redis_Utility.Get
漫步者W820NB评测,300价位的降噪蓝牙耳机,不吹不黑说说心里话耳机几乎是当代年轻人必不可少的东西,无论是通勤路上享受音乐观看影视剧,还是学习工作中需要隔绝外音集中注意力,耳机都是必备产品。有了它不仅仅能够避免吵到别人,而且还可以快速沉浸在属于
日本爱华收音机麻雀虽小五脏俱全几个月之前在一个专业户手上淘了一款日本爱华的收音机,今天把它开机测试一下里面有一个电池的正极电线断了。不通电重新焊接一下,可能是打开盖子用力了一点。电线扯断买回来的时候是好的。这个
阿里腾讯生态互通的B面是11ampamplt1编辑导读越来越多的迹象表明,阿里和腾讯要互通生态了。这两个分别在各自的领域做到了王者的企业,如何相互合作是否能做到112呢?本文作者认为不然,很有可能是111。为什么这么说呢?一起
FIL智能合约解读这可以通过几个关键的方式实现,都可以通过定制的Chainlink外部适配器实现1。智能合约输入使用Chainlink口令将存储在星际文件系统上的经过密码学证明的数据桥接到区块链上。
三星手机逐渐衰落,小米正在崛起,有望成为全球第一在现在的全球手机品牌中,由三星和苹果手机垄断的局面已经逐渐分崩离析,恐怕再也回不到曾经的巅峰时期了,因为我国的国产手机品牌已经在强势崛起,不仅在国内深受国民的喜爱,更是在国际市场上
这款耳机不用连手机,也不用入耳,还自带8G存储蓝牙耳机发展到今天,同质化越来越严重,几款耳机放在面前,很难从中选出一款优秀的。再加上各大品牌花里胡哨的宣传,让用户选购耳机时更加头大,如何在众多品牌耳机中选出符合自身需求的耳机。
爷青回!索尼线上博物馆开张多款经典手机重现近日,索尼官方网站上线了一个索尼Xperia线上博物馆页面。该页面收纳了从索尼爱立信最早在2001年推出的手提电话C1002S到如今最新的索尼Xperia1III所有的手机产品。C
苹果为iOS15官方天气App引入重大功能与设计改进在2020年收购了流星的天气应用DarkSky之后,苹果终于在iOS15官方天气App中引入了重大的设计改进。首先,从外观来看,iOS15中的新版天气应用,已能够较以往更加一目了然
特斯拉在人工智能日推出DojoD1芯片8月19日,也就是汽车制造商的人工智能日,特斯拉发布了一款为其人工智能网络提供数据中心的训练服务的定制芯片。Autopilot硬件高级总监GaneshVenkataramanan表
十万元档就能有600km续航?合创Z03到底是什么来头8月20日晚,HYCAN合创品牌宣布旗下紧凑型车纯电动SUV车型合创Z03,正式开启大定。从13万元起的预售价来看,合创Z03将进入国内市场纯电动车竞争相对激烈的1015万元价格区
粤湾商闻杭州政府建二手房交易平台,买卖房无需中介?政策速递PolicyNews三孩政策写入计生法,社会抚养费废止施行近二十年的人口与计划生育法(下称人口计生法)迎来第二次修改三孩政策入法,社会抚养费及相关处分的规定删除。人口政策调