使用 Abp.Zero 搭建第三方登录模块(一):原理篇

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

​第三方登录是基于用户在第三方平台上(如微信,QQ, 百度)已有的账号来快速完成系统的登录、注册-登录等功能。

微信的鉴权

以微信的鉴权为例:

假如你的网站有一个扫码登录的功能,会弹出一个由微信提供的二维码页面,你需要用手机上的微信扫码,操作一下,就可以完成登录。如这个链接:

微信登录 (qq.com)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4xnHEuVG-1656045813148)(https://img2022.cnblogs.com/blog/644861/202206/644861-20220624110716551-476355512.gif “点击并拖拽以移动”)]​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8CzOAxL2-1656045813149)(https://img2022.cnblogs.com/blog/644861/202206/644861-20220624110716551-476355512.gif “点击并拖拽以移动”)]​

嗯。从研发和使用上来说这是最快捷,也是目前大部分站点用的扫码登录方式。但这个是依赖于微信开放平台的功能,微信作为鉴权服务的提供方,有义务监管第三方的网站(你的网站相对于微信就是第三方),因此你需要有企业或组织的营业执照,经过认证,才有资格申请这个功能。(听说认证还需要交钱,OMG)

对于个人来说,这显然不是一个可行的方式。

那么我们还有两个选择:

  1. 微信公众号鉴权:你的网页在微信客户端中被访问,通过跳转至鉴权链接,弹出一个鉴权页面,操作一下即可完成登录,请阅读官方文档网页授权 | 微信开放文档 (qq.com)

这是不需要认证的,我认为从微信的角度来说,微信客户端的浏览器控件作为集成在微信里的功能,有能力把控鉴权链接是从已在微信后台登记的合法域名跳转的,但是你的网站仍然要备案和走https协议

  1. 微信小程序鉴权:这与微信公众号鉴权类似,区别是微信小程序SDK提供了登录功能,小程序不需要认证,可获取用信息, 请阅读官方文档wx.login(Object object) | 微信开放文档 (qq.com)

第三方登录的流程

首先用户通过主动的确认授权,第三方平台会生成一个登录凭证,根据第三方平台的用户凭证, 登录凭证,返回会话令牌和用户在第三方账号的唯一Id,令牌用于获取第三方平台的账号信息,比如头像,昵称,地址,电话号码等,如果用户是第一次登录,则可以用这些账号信息建立一个系统账号。

登录凭证和令牌,都具有时效性

在微信鉴权中,相关的概念的具体为:

  • 登录凭证:Code
  • 会话令牌:SessionKey
  • 账号的唯一Id:OpenId
  • 用户凭证:AppId、AppSecret

思考如何实现自己的登录逻辑:

公众号的登录页面,和微信小程序可以通过扫码作为入口。再通过我们自己后端的鉴权服务,类似如下的流程

  1. 点击网页微信小程序登录,网页生成一个Token,调用getwxacode()接口,将scene设置为Token值,page设置为小程序鉴权页面,生成小程序码。
  2. 用户使用微信客户端扫码,进入小程序鉴权页面,从参数获取 scene(就是 Token),并调用后端接口,将Token作为Key记录至服务端Cache(Key/Value)中
  3. 用户在小程序中点击同意登录,调用 wx.login() 获取 Code,并调用后端接口,将该Code值录入到以Token为Key的Value中
  4. 与此同时网页在轮询调用查询Cache条目的接口,一旦获取到Token对应的Code值,表明完成授权
  5. 网页调用第三方登录接口,将Code值传给后端服务作为登录凭证。调用相关微信第三方登录接口,以换取SessionKey,OpenId,再利用SessionKey查询相关头像,昵称,地址,电话等信息返回

用户的操作路径:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6WRwxqI0-1656045813151)(https://img2022.cnblogs.com/blog/644861/202206/644861-20220624110716551-476355512.gif “点击并拖拽以移动”)]​

经过对比与思考,我们用调用方式更简单的微信小程序的鉴权方式。后端采用.Net6 + Abp.Zero快速搭建用户系统,利用Abp.Zero集成的第三方登录功能快速实现微信登录。为了节省时间还需要一个现成的微信SDK库。

接下来,开始项目搭建

使用 Abp.Zero 搭建第三方登录模块(二):服务端开发 - 林晓lx - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MSP430F5529 DriverLib 库函数学习笔记(十二)I2C实战

目录上机实战I2C给 DAC 芯片 DAC7571 写入数字量DAC7571 介绍程序分析引脚复用I2C 初始化发送一个字节发送一个字读取一个字节读取多个字节中断服务函数整体代码main.cMSP430F5529_I2C.cMSP430F5529_I2C.h实验结果I2C 读取 TMP421 温度TMP421 简介程序摘要TMP421初始化温度的读…

mysqldump造成Buffer Pool污染的研究 [转]

原文链接:http://www.shaoqun.com/m/a/43307.aspx 前言: 最近Oracle MySQL在其官方Blog上贴出了 5.6中一些变量默认值的修改。其中innodb_old_blocks_time 的默认值从0替换成了1000(即1s) 关于该参数的作用摘录如下: h…

自动加载缓存框架

2019独角兽企业重金招聘Python工程师标准>>> 自动加载缓存框架 代码,请访问github 获取更详情,更新的内容 QQ交流群:429274886,版本更新会在群里通知,能了解最新动态 0.5版本已经是稳定版本了,大家可以放心…

(数据科学学习手札139)geopandas 0.11版本重要新特性一览

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

MSP430F5529 DriverLib 库函数学习笔记(十三)认识低功耗模式

目录硬知识低功耗模式MSP430单片机各工作模式下的电流消耗API进入低功耗模式退出低功耗模式平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 硬知识 低功耗模式 MSP430单片机具有7种低功耗模式(LPM0…

剖析虚幻渲染体系(16)- 图形驱动的秘密

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

Python NLPIR(中科院汉语分词系统)的使用 十五分钟快速入门与完全掌握

前叙 博主写这篇文章使用了八十分钟,阅读需要十五分钟,读完之后你将会学会在Python中使用NLPIR2016.如果你花费更多的时间练习后半部分的例子,你将能够在一天内学会在Python中使用NLPIR2016的全部所需知识 如果你想要获取更详细的API翻译,你需要进一步学习ctypes,附赠一篇关于…

微信朋友圈也可以发语音你们造吗?

在微信朋友圈发照片太矫情,小视频又耗流量,只发文字又太单调,何不发段语音来呼朋唤友呢?你是说朋友圈发语音?这是真的吗?sure,开发者已经利用微信JS-SDK接口实现了,扫描下方的二维码…

MSP430F5529 DriverLib 库函数学习笔记(十四)看门狗定时器 (WDT)

目录硬知识看门狗定时计数器 (WDTCNT)看门狗模式定时计数模式看门狗定时器中断时钟故障保护功能低功耗模式下的看门狗操作看门狗定时器控制寄存器WDT_A API (机翻)参数上机实战定时计数模式配置中断服务函数整体代码实验结果看门狗模式配置整体代码平台&…

初学 Unsupervised feature learning and deep learning--Sparse autoencoder

今天做了一下 Stanford CS294A 的一个 programming assignment: sparse autoencoder 因为之前做过 Andrew Ng 的 ml online class 的 neural network 那节的作业,所以这个实现起来就很 easy 了。直接贴代码(all vectorized):1 [d …

【Nginx】Windows平台下配置Nginx服务实现负载均衡

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

PLC基础入门

PLC编程入门基础技术知识学习 2016-06-27 xjp7879 摘自 电工技术知...第一章 可编程控制器简介 可编程序控制器,英文称Programmable Controller,简称PC。但由于PC容易和个人计算机(Personal Computer)混淆,故人们仍习…

Xcode 的正确打开方式——Debugging

2019独角兽企业重金招聘Python工程师标准>>> 程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不可避免地需要使用 Xcode。这篇博客就主要介绍了 Xcode 中几种能够大幅提升代码调试效率的方式。 “If debugging is the process of removing…

VS Code 调试 PHP有关配置

一、安装VS CODE 、 WampServer 二、用VS Code 打开php项目后,提示 "Cannot validate since no PHP executable is set. Use the setting php.validate.executablePath to configure the PHP executable." 解决方法如下: 在“文件”-“首选项”…

MSP430F5529 DriverLib 库函数学习笔记(十六)比较器B Comp_B

目录硬知识比较器B介绍比较器 B 的特点比较器 B 的结构模拟输入部分比较部分基准电压部分低通滤波部分比较器和普通运放的区别比较器B测量电阻原理利用比较器B实现电容触摸按键原理比较器B控制寄存器COMP_B API (机翻)介绍处理初始化和输出的函数参数处理中断的函数参数处理COM…

深入解析kubernetes controller-runtime

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

数据结构练习 00-自测3. 数组元素循环右移问题 (20)

一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>0)个位置,即将A中的数据由(A0A1……AN-1)变换为(AN-M …… AN-1…

MSP432P401R TI Drivers 库函数学习笔记(一)导入工程模板

目录从Resource Explorer中导入从SDK导入测试平台:Code Composer Studio 10.4.0 MSP432P401R SimpleLink™ 微控制器 LaunchPad™ 开发套件 (MSP-EXP432P401R) 从Resource Explorer中导入 本文所用编程平台为Code Composer Studio 10.4.0 启动软件后在Help中打开…

ThreadLocal的简单理解

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

JMS 在 SpringBoot 中的使用

当前环境 Mac OS 10.11.xdocker 1.12.1JDK 1.8SpringBoot 1.5前言 基于之前一篇“一个故事告诉你什么是消息队列”,了解了消息队列的使用场景以及相关的特性。本文主要讲述消息服务在 JAVA 中的使用。 市面上的有关消息队列的技术选型非常多,如果我们的代…