范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

微信扫码登录之最简实现

  最近开发某应用的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(#34;login_{sessionId}");             while (loginResult == null)             {                 Thread.Sleep(2000);                 loginResult = Redis_Utility.Get(#34;login_{sessionId}");             }             return loginResult;         }
  3 二维码对应服务端代码。这个接口地址也就是二维码的链接,即用户微信扫码后打开的地址,此时code参数为空,服务端会把当前页面重定向到微信的授权页面,获取到微信授权code后再跳转回当前接口地址,此时code不为空了,服务端拿到code,结合公众号的appid accesstoken之类就可以从微信得到用户的openid,拿到openid就可以查询用户表,剩下的不用多介绍了吧。实际开发时 为了使得程序更简单易维护,也可以把接口拆分开,一个是扫码接口,一个是微信授权后跳转回来的接口,我为了省事,两个接口合并在一起,通过检查code是否为空,识别出是扫码还是微信授权后跳转回来。登录成功后 输出一段html代码在手机上显示。///          /// 登录接口         ///          /// 客户端sessionid         /// 公众号授权code              /// {userInfo:xxxx, token:xxxx}         [HttpGet]         [AllowAnonymous]         public async Task Login(string sessionId, string? code = null)         {             if (string.IsNullOrEmpty(code))             {                 string redirect_uri = HttpUtility.UrlEncode(Request.GetDisplayUrl());//授权后跳转回来                 Response.Redirect(#34;https://open.weixin.qq.com/connect/oauth2/authorize?appid={APPID}&redirect_uri={redirect_uri}&response_type=code&scope=SCOPE&state=STATE#wechat_redirect");             }             else             {                 string openId = await WechatServices.GetOpenId(code);                 var result = adminServices.Login(openId);                 if (result.Code == 0)                 {                     Redis_Utility.Set(#34;expert_admin_login_{sessionId}", result.Data, 1);                     string html = htmlTemp.Replace("$content", "登录成功");                     await Response.WriteAsync(html);                 }                 else                 {                     await Response.WriteAsync(result.Message);                 }             }         }
  码字辛苦,如果觉得有参考价值请点个赞,如果有看不懂的地方欢迎提问,如果有更好更简单的办法欢迎指教!
您的专属健康管家,华硕VivoWatchSP健康表2震撼上市随着科技的发展,人们对于智能手表等可穿戴设备的需求,也不仅限于看时间记录运动步数等简单的信息呈现了心率血氧脉搏指数睡眠状态运动追踪等健康监测功能,逐渐成为智能化可穿戴设备的必备功能中央空调比挂机好在哪里随着空调的普及,市面上的空调种类越来越多,让许多家里在装修的朋友们挑花了眼。其中中央空调和壁挂式空调是最受欢迎的空调产品了。那么中央空调比壁挂式空调好在哪里呢?首先在节能方面,一般苹果iPhone13系列4款机型详细参数曝光,看看哪款才是你的最爱?根据之前曝光的消息,苹果2021年新款iPhone手机iPhone13系列手机将于9月中旬发布,随着发布时间的逼近,iPhone13系列手机的各项功能和设计都越来越明朗,目前iPh如果微信从下月开始收费,每月10元,你还会用吗?如果收费了就不用了!会选择其他的应用软件使用!能够方便联系沟通就可以了!在微信收费时期相信好多用户都会选择不用!选择其他生活平台,它会失去一大批用户,也就失去自己的很多资源!在这收四款年度旗舰机型大集合,全面总结优缺点在2021年各家手机厂商旗舰机型众多,如果预算方面充足的用户可以按照自己的需求考虑目前四款最佳机型。接下来看下这几款机型的缺点以及优点。最值得期待的iPhone13每一代的iPho巴掌大的单反相机佳能EOS200D2,拍出最美的自己智能手机的摄影能力不断进化,让很多人已经渐渐忘记单反相机的存在了。说实话日常拍照确实拿着一个手机就完全够用了,但是如果想要更好的拍照画质单反相机还是无法取代的。只不过便携性是目前单华为路由AX3Pro更新改用高通双核芯片近日,华为公布了新一代AX3Pro路由器,这款产品此前搭载华为自研的凌霄四核1。4GHz处理器,新版现已更换为高通双核1GHz处理器,设备代号也从WS7200更改为WS7206,首方正设计元素重出江湖?小米11Ultra领衔,vivo将发布同类产品这些年,见惯了各种圆润和纤薄元素的手机设计,你是否也开始怀念那些拥有方正外观设计的产品?来,这里汇总了三款类似机型给你!最近,看到了即将要在本月发布的vivo新一代旗舰手机vivo现在的华为手机,有多少是国产化?最新的华为P50系列是目前使用本国囯产零部件率最高的手机,即使美国的苹果手机韩国的三星手机也比不过华为手机使用本国零部件的国产率。这个问题描述不清楚。第一,范围不清楚,现在的华为手你下载了国家反诈app了吗?国家反诈中心APP是保护广大市民财产安全的一件盔甲,其预警功能可自动识别诈骗来电短信APP并进行无感阻断当遇到疑似诈骗的情况可利用其迅速举报一旦不幸被骗,也能第一时间在国家反诈中心纯电车6连冠北汽新能源,2020下滑82。8,2021上半年持续下滑52。6说起北汽新能源,在C端消费市场一直不温不火,但在B端市场,凭借北汽集团良好的政府合作关系,以及北汽集团旗下出租车公共出行租赁公司兄弟单位支持,北汽新能源在B端市场可谓是大放异彩。从
可交互数学课本定制教学内容,学习就像升级打怪大数据文摘出品作者蒋宝尚一本优秀的数学课本应该长什么样?没有满篇幅的数学公式推导,没有天书般难懂的数学概念,不存在两个水管进水,一个水管放水这种沙雕式问题。能够和课本交流,课本上面用Python开发一个自然语言处理模型,并用Flask进行部署截住到目前为止,我们已经开发了许多机器学习模型,对测试数据进行了数值预测,并测试了结果。实际上,生成预测只是机器学习项目的一部分,尽管它是我认为最重要的部分。今天我们来创建一个用于早高FENG苹果发布AirPods固件更新EAFIFA将更名EASportsFC苹果发布AirPods固件更新苹果今天发布了新的4E71固件更新,适用于AirPods2AirPodsMax和AirPodsPro,苹果还发布了适用于AirPods3的新4E71固6。5英寸等宽设计自研芯片OPPOReno8Pro已出现在多个认证网站上近期,关于OPPO将发布Reno8系列的各种爆料越来越多,根据目前看,该系列机型将会有包括Reno8SEReno8标准版和Reno8Pro三个版本,并且据国内数码博主爆料,该系列机南卡L1护眼台灯让孩子远离近视健康成长相关统计调查数据表明,我国患有近视的孩子数量越来越庞大,并呈现逐年增长的态势。坐姿不正确电子产品的应用眼睛离书本过近课业负担过重不适宜的光线以及长时间用眼等原因都有可能诱发近视。因纳米王子出手乙二醇生产更绿色以C60为代表的富勒烯被誉为纳米王子,在绿色能源生物医药催化剂等领域发挥着重要作用,例如在化妆品制备中可作为抗氧化因子,在太阳能电池中也是关键材料。近日,C60可作为合成气制备乙二银河麒麟V10服务版(FT20004CPU)部署Nginx笔记将centos或windows系统上运行的系统迁移到银河麒麟V10服务版系统上比较容易,如果您的技术路线是(springbootvuemysql)无其他需要操作系统支持的功能,只需旧时光你怀念滑盖手机的那种滑动的阻尼感吗?时代在发展,科技在进步。手机发展到现在从正面看是认不出来哪个品牌什么型号的手机,只能从背部去看,甚至就连背部还有很多雷同之处。手机同质化已经必不可免地在延续着,纵观整个手机市场,绝和平精英SS18赛季最新改帧率教程苹果改90120帧超详细教程相信很多人小伙伴都有遇到过和敌人对枪,自己明明缩回对面打不到的掩体后面了,但是敌人还是把你打倒了,这是为什么呢?原因有两种第一网络延迟第二帧率压制那么我们今天来说说帧率,相信对于大格力新轻厨惊喜上线,探寻智能健康厨房的奥秘5月10日晚,格力电器简单做,健康吃新轻厨战略发布会正式上线,格力新轻厨套系厨电首次亮相,发布会上格力家电研究技术大咖汪春节石磊和格力产品体验官孟羽童对话,共同解读新轻厨概念及产品服务器监控配置RedHatEnterprise安装SNMPRedHatEnterprise安装SNMP1编译安装netsnmptarzxvfnetsnmp5。6。2。1。tar。gzcdnetsnmp5。6。2。1。configurepr