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

简介: 原文http://www.cnblogs.com/cyq1162/archive/2012/11/06/2756247.html 上节内容:通用社区登陆组件技术分享(开源)上篇:OAuth 授权登陆介绍   本节包括以下内容: 1:第三方社区账号登陆的授权流程 2:OAuth2 组件的下载及web.

原文http://www.cnblogs.com/cyq1162/archive/2012/11/06/2756247.html

 

上节内容:通用社区登陆组件技术分享(开源)上篇: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:有没有源码?

 

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

 

51cto大赛的参赛页面,感谢路过的朋友也顺手扔一票:http://blog.51cto.com/contest2012/2127378   

 

版权声明:本文原创发表于 博客园,作者为 路过秋天 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
目录
相关文章
|
4月前
|
SQL 数据可视化 关系型数据库
MCP与PolarDB集成技术分析:降低SQL门槛与简化数据可视化流程的机制解析
阿里云PolarDB与MCP协议融合,打造“自然语言即分析”的新范式。通过云原生数据库与标准化AI接口协同,实现零代码、分钟级从数据到可视化洞察,打破技术壁垒,提升分析效率99%,推动企业数据能力普惠化。
409 3
|
10月前
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
397 0
|
5月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1158 1
|
6月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
229 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
11月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
750 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
7月前
|
机器学习/深度学习 数据采集 存储
朴素贝叶斯处理混合数据类型,基于投票与堆叠集成的系统化方法理论基础与实践应用
本文探讨了朴素贝叶斯算法在处理混合数据类型中的应用,通过投票和堆叠集成方法构建分类框架。实验基于电信客户流失数据集,验证了该方法的有效性。文章详细分析了算法的数学理论基础、条件独立性假设及参数估计方法,并针对二元、类别、多项式和高斯分布特征设计专门化流水线。实验结果表明,集成学习显著提升了分类性能,但也存在特征分类自动化程度低和计算开销大的局限性。作者还探讨了特征工程、深度学习等替代方案,为未来研究提供了方向。(239字)
233 5
朴素贝叶斯处理混合数据类型,基于投票与堆叠集成的系统化方法理论基础与实践应用
|
9月前
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
1963 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
11月前
|
人工智能 自然语言处理 Java
Spring 集成 DeepSeek 的 3大方法(史上最全)
DeepSeek 的 API 接口和 OpenAI 是兼容的。我们可以自定义 http client,按照 OpenAI 的rest 接口格式,去访问 DeepSeek。自定义 Client 集成DeepSeek ,可以通过以下步骤实现。步骤 1:准备工作访问 DeepSeek 的开发者平台,注册并获取 API 密钥。DeepSeek 提供了与 OpenAI 兼容的 API 端点(例如),确保你已获取正确的 API 地址。
Spring 集成 DeepSeek 的 3大方法(史上最全)
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
452 0

热门文章

最新文章