通用社区登陆组件技术分享(开源)中篇:OAuth 登陆组件流程及组件集成方法

简介:

上节内容:通用社区登陆组件技术分享(开源)上篇:OAuth 授权登陆介绍
 

本节包括以下内容:

复制代码

1:第三方社区账号登陆的授权流程

2:OAuth2 组件的下载及web.config配置

3:OAuth2 组件的5行代码编写流程

4 :总结与下节内容预告

复制代码

 

 

一: 第三方社区账号登陆的授权流程

1:首先从这里开始:用户进入登陆界面

 

2:用户点击用新浪微博或QQ登陆,系统跳到第三方授权页面,(QQ示例授权界面)


3:确定授权后,第三方跳转返回你的回调页(在应用里设置),通常仍是系统登陆页面统一处理。授权用户绑定您网站的账号。

 

我们首次引导登陆并绑定账号,当然,官方建议的比较好的用户体验的界面是这样的:

connect_UI_5.png  

4:用户正常登陆或注册新账号,自动实现绑定,至此流程结束,下一次用户点用第三方账号登陆时,系统检测到已绑定账号,直接用绑定的账号进入后台。

 

二:OAuth2 组件的下载及web.config配置 

 

复制代码

1:下载OAuth2.dll组件,下载: OAuth2.rar(download times)

2:引用该dll到您的网站项目中;

3:在web.config配置您的appkey、appsercet及回调网址(通常是登陆页面),相关的数据填写到web.config对应key的value里。

复制代码

 

PS:获取或调置回调网址是在新浪和QQ开放者平台操作的,相关网址见上节文章。

 

接下来,我们要在登陆界面(示如Login.aspx)动点小手术: 

三:OAuth2 组件的5行代码编写流程 

1: OAuth2.UI.GetHtml() //获取界面显示

代码示例:通常我们可能会在Login.aspx的html里写上这么一行代码来显示: <%=OAuth2.UI.GetHtml()%>

当然我们也经常喜欢在Login.aspx.cs后台代码(通常是Page_Load事件)里输出:div控件ID.InnerHtml=OAuth2.UI.GetHtml(); 

于是就有了刚才的登陆界面下面那两个第三方授权链接图标: 

   

 

用户点击第三方授权,跳到第三方授权页面,操作完回调还会返回到这个登陆界面,只是多了两个参数code=xxxx&state=xxx(回调页面仍设置登陆页)。

2:OAuth2.OAuth2Base ob = OAuth2.OAuth2Factory.Current;//获取当前的授权类型,如果成功,则缓存到Session中。 

3:ob.Authorize(out account)//检测是否授权成功,并返回绑定的账号。

这两行代码,是写在Page_Load事件中,判断如果是跳转回来的,就分析授权,然后进行分支处理:

以下是示例的分支代码:

复制代码
OAuth2.OAuth2Base ob = OAuth2.OAuth2Factory.Current; // 获取当前的授权类型
if (ob !=  null// 说明用户点击了授权,并返回到登陆界面来
{
     string account =  string.Empty;
     if (ob.Authorize( out account)) // 检测是否授权成功,并返回绑定的账号(具体是绑定ID还是用户名,你的选择)
    {  
       if (! string.IsNullOrEmpty(account)) // 已绑定账号,直接用该账号设置登陆。
      {
           // 根据账号,设置登陆、设置cookie,跳转到后台管理界面。
      }
       else  //  未绑定账号,引导提示用户绑定账号。
      {
           //取用户的第三方头像和昵称,组装界面显示,像秋色园就一行提示文字           
      }

    } 

}
else // 读取授权失败。
{
     //提示用户重试,或改用其它社区方法登陆。
}

复制代码

如果用户已经授权,首次未绑定账号,通常就有了最下方的提示文字,同时“登陆”的文字就改成了“绑定账号":

  

 

4:OAuth2.OAuth2Base ob = OAuth2.OAuth2Factory.SessionOAuth;//获取存在Session的授权

5:ob.SetBindAccount(userName);//绑定账号

这两行代码,写在BtnLogin和BtnRegister按钮的事件中,当用户登陆,或注册新账号时,我们从Session中获取刚刚的社区授权,然后绑定账号:

复制代码
// 用户登陆,或注册完账号(这时我们可以拿到ID或者username,绑定哪个就看使用哪个方便了,我们添加以下三行代码,
OAuth2.OAuth2Base ob = OAuth2.OAuth2Factory.SessionOAuth; // 获取刚刚的授权(授权后存在Session中)
if (ob !=  null && ! string.IsNullOrEmpty(ob.openID))
{
   ob.SetBindAccount(userName); // 绑定账号username或id都可以

} 

复制代码

到这里,整个应用就完成了,就是这么简单,除配置项,组件提供的关键的代码只有5行,却实现了相关的功能。


四:总结与下节内容预告

A:看完本文,您应该可以获取到以下信息: 

 

1:知道OAuth授权的界面流程

2:知道怎么实现这个授权流程。

 

B:如果您认真看完本节,或自己实操下,您可能有以下问题想问:

 

1:和网站绑定授权,没看到相关的数据库操作,那获取的token和openid存在哪?

2:如何修改界面,或自定义UI界面?

3:有没有源码?

 

也许,下面这句话给了您答案:下节,将开放源码下载并尝试为您讲解源码中的组件设计思路,敬请关注。


相关文章
|
23天前
|
存储 JSON Ubuntu
时序数据库 TDengine 支持集成开源的物联网平台 ThingsBoard
本文介绍了如何结合 Thingsboard 和 TDengine 实现设备管理和数据存储。Thingsboard 中的“设备配置”与 TDengine 中的超级表相对应,每个设备对应一个子表。通过创建设备配置和设备,实现数据的自动存储和管理。具体操作包括创建设备配置、添加设备、写入数据,并展示了车辆实时定位追踪和车队维护预警两个应用场景。
44 3
|
1月前
|
人工智能 自然语言处理 关系型数据库
阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成
近日,阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成。
|
3月前
|
机器学习/深度学习 运维 算法
【阿里天池-医学影像报告异常检测】3 机器学习模型训练及集成学习Baseline开源
本文介绍了一个基于XGBoost、LightGBM和逻辑回归的集成学习模型,用于医学影像报告异常检测任务,并公开了达到0.83+准确率的基线代码。
64 9
|
4月前
|
机器学习/深度学习 分布式计算 大数据
MaxCompute 2.0:开源系统的集成与创新
增强实时处理能力:进一步加强与Flink等实时处理框架的合作。 强化机器学习支持:提供更多内置的机器学习算法和工具。 增强数据治理功能:提供更完善的数据质量和安全治理方案。
|
5月前
|
算法 C#
C#开源实用的工具类库,集成超过1000多种扩展方法
C#开源实用的工具类库,集成超过1000多种扩展方法
|
6月前
|
Kubernetes 关系型数据库 分布式数据库
【PolarDB开源】PolarDB与Kubernetes集成:容器化部署的最佳实践
【5月更文挑战第21天】本文介绍了将阿里云的高性能数据库PolarDB与容器编排工具Kubernetes集成的步骤。首先,需准备Kubernetes集群和PolarDB Docker镜像,安装Helm。然后,通过Helm部署PolarDB,设置存储类和副本数。接着,应用配置PolarDB连接信息,打包成Docker镜像并在K8s集群中部署。此外,调整PolarDB参数以优化性能,并使用Prometheus和Grafana监控。本文为PolarDB在Kubernetes中的最佳实践提供了指导。
159 4
|
6月前
|
监控 关系型数据库 分布式数据库
【PolarDB开源】PolarDB开源生态构建:插件开发与第三方工具集成
【5月更文挑战第23天】PolarDB开源项目成熟,生态成为开发者关注点。其插件机制和接口设计允许添加自定义功能,无需修改核心代码,促进扩展建设。本文涵盖插件开发流程和第三方工具集成实践,如性能监控插件示例和数据迁移工具、监控系统集成。PolarDB通过开放生态与标准化接口,激发开发者潜力,共同推动数据库技术创新。
99 0
|
人工智能 API Docker
智能文档检索和简便集成的开源 AI 问答工具:Danswer
当你使用 Danswer 时,只需以自然的方式提出问题,就像与朋友交谈一样简单,它会自动搜索公司内部的文件和资料,然后给你一个可靠的答案,并附上来源。
|
6月前
|
人工智能
FaceChain集成最强开源SDXL,生成人像质感拉满!
FaceChain集成最强开源SDXL,生成人像质感拉满!
82 2
下一篇
无影云桌面