Step1帐户登录系统(1.程序结构)
2008-11-23 23:13
375 查看
上次粗略的讲解了Step1帐户登录系统的思路之后,这一次我将介绍一下我的程序实现的结构,从这篇文章之后,就将细化到每一个接口,例如Google,Yahoo,Live等,对这些接口的使用进行详细的介绍。
先看看文件结构,说起来很简单因为一共只有以下三个文件:
1.Login.aspx,最重要的页面,在用户登录时让用户选择采用哪种帐号登录,用户选择对应的帐号之后,将用户转向到对应的网址;
2.Logout.aspx,将用户注销,并转向到原来的URL;
3.Handler.aspx,接收帐户服务器(例如Google的服务器)回发的登陆请求,根据回传的资料请求用户的信息,设置到Cookie并将用户转向到原先请求的网址;
再看看配置,为便于扩展和开发,我采用了在Web.config文件之中建立XML格式的配置的方法,我的网站目前的配置如下(其中的***是本站的私有Key,因此被我屏蔽了):
<AccountServerConfiguration cookieName="Step1ATS" cookieDomain="step1.cn" paramName="Step1AC" rootUrl="http://account.step1.cn/account/">
2 <AccountServers>
3 <AccountServer name="google.com" type="Step1.AccountServer.AccountServers.AuthSubServer,Step1.AccountServer" urlAuthSubRequest="https://www.google.com/accounts/AuthSubRequest?" urlScope="http://www.google.com/m8/feeds/" urlData="http://www.google.com/m8/feeds/contacts/default/thin?max-results=0"/>
4 <AccountServer name="yahoo.com" type="Step1.AccountServer.AccountServers.BBAuthServer,Step1.AccountServer" appid="CQLE4v*****************N.WXQbRg--" secret="a6e8**********52d1654f0" timeout="300" server="https://api.login.yahoo.com" pathLogin="/WSLogin/V1/wslogin?" pathPwtoken_login="/WSLogin/V1/wspwtoken_login?"/>
5 <AccountServer name="live.com" type="Step1.AccountServer.AccountServers.LiveServer,Step1.AccountServer" appid="000000004000****" secret="account.step1.cn" securityalgorithm="wsignin1.0"/>
6 <AccountServer name="xiaonei.com" type="Step1.AccountServer.AccountServers.OpenSocialServer,Step1.AccountServer" loginUrl="http://apps.xiaonei.com/passport/login.html"/>
7 </AccountServers>
8 </AccountServerConfiguration>
9
简单的介绍一下配置项的内容,根节点AccountServerConfiguration表明这是一个帐户登录系统配置的内容,而它的几个属性是登录系统的全局配置,cookieName代表写入到Cookie的键名称,cookieDomain是写入Cookie的域,paramName是向客户Web栏目回传登录信息的参数名称,rootUrl是整个程序的部署URL。
AccountServers节点下的每一个AccountServer代表一个种登录类型服务器,属性name是该类型的唯一标示,属性type是该类型对应的实现类的名称,其他所有的属性都是对该类型的配置参数,例如对于Yahoo 的BBAuth,就必须配置在Yahoo登记的appid等。
了解文件结构和配置结构之后,再对照一下类的设计结构:
上图之中的LoginPage.cs,LogoutPage.cs,HandlePage.cs分别代表上面提到的3个页面,Configuration.cs是用来读取上图提到的XML配置的类,AccountHelper.cs包含一些静态方法,例如读写用户Cookie等,其中最重要的是BaseServer,以及AccountServers目录下的那些类。
AccountServers都继承BaseServer,每一个类都代表一种登陆类型,例如OAuth,OpenID,Google的AuthSub等(其中的有些我还没有完全实现),因此添加新的类型支持,只需要在AccountServers文件夹之中添加一个对BaseServer的继承即可。
Tools文件夹包含一些附加的工具类,例如对WebService的访问等等。
因为我设计的时候,并没有从开始就考虑使用一个非常结构化的模式来设计,因此这个结构设计也显得比较简单,不过我个人比较喜欢这种简单明了的设计。本来计划这篇文章会包含代码的,可是发现现在已经很长了,只好在下一篇再贴上上面的一些重要代码。
先看看文件结构,说起来很简单因为一共只有以下三个文件:
1.Login.aspx,最重要的页面,在用户登录时让用户选择采用哪种帐号登录,用户选择对应的帐号之后,将用户转向到对应的网址;
2.Logout.aspx,将用户注销,并转向到原来的URL;
3.Handler.aspx,接收帐户服务器(例如Google的服务器)回发的登陆请求,根据回传的资料请求用户的信息,设置到Cookie并将用户转向到原先请求的网址;
再看看配置,为便于扩展和开发,我采用了在Web.config文件之中建立XML格式的配置的方法,我的网站目前的配置如下(其中的***是本站的私有Key,因此被我屏蔽了):
<AccountServerConfiguration cookieName="Step1ATS" cookieDomain="step1.cn" paramName="Step1AC" rootUrl="http://account.step1.cn/account/">
2 <AccountServers>
3 <AccountServer name="google.com" type="Step1.AccountServer.AccountServers.AuthSubServer,Step1.AccountServer" urlAuthSubRequest="https://www.google.com/accounts/AuthSubRequest?" urlScope="http://www.google.com/m8/feeds/" urlData="http://www.google.com/m8/feeds/contacts/default/thin?max-results=0"/>
4 <AccountServer name="yahoo.com" type="Step1.AccountServer.AccountServers.BBAuthServer,Step1.AccountServer" appid="CQLE4v*****************N.WXQbRg--" secret="a6e8**********52d1654f0" timeout="300" server="https://api.login.yahoo.com" pathLogin="/WSLogin/V1/wslogin?" pathPwtoken_login="/WSLogin/V1/wspwtoken_login?"/>
5 <AccountServer name="live.com" type="Step1.AccountServer.AccountServers.LiveServer,Step1.AccountServer" appid="000000004000****" secret="account.step1.cn" securityalgorithm="wsignin1.0"/>
6 <AccountServer name="xiaonei.com" type="Step1.AccountServer.AccountServers.OpenSocialServer,Step1.AccountServer" loginUrl="http://apps.xiaonei.com/passport/login.html"/>
7 </AccountServers>
8 </AccountServerConfiguration>
9
简单的介绍一下配置项的内容,根节点AccountServerConfiguration表明这是一个帐户登录系统配置的内容,而它的几个属性是登录系统的全局配置,cookieName代表写入到Cookie的键名称,cookieDomain是写入Cookie的域,paramName是向客户Web栏目回传登录信息的参数名称,rootUrl是整个程序的部署URL。
AccountServers节点下的每一个AccountServer代表一个种登录类型服务器,属性name是该类型的唯一标示,属性type是该类型对应的实现类的名称,其他所有的属性都是对该类型的配置参数,例如对于Yahoo 的BBAuth,就必须配置在Yahoo登记的appid等。
了解文件结构和配置结构之后,再对照一下类的设计结构:
上图之中的LoginPage.cs,LogoutPage.cs,HandlePage.cs分别代表上面提到的3个页面,Configuration.cs是用来读取上图提到的XML配置的类,AccountHelper.cs包含一些静态方法,例如读写用户Cookie等,其中最重要的是BaseServer,以及AccountServers目录下的那些类。
AccountServers都继承BaseServer,每一个类都代表一种登陆类型,例如OAuth,OpenID,Google的AuthSub等(其中的有些我还没有完全实现),因此添加新的类型支持,只需要在AccountServers文件夹之中添加一个对BaseServer的继承即可。
Tools文件夹包含一些附加的工具类,例如对WebService的访问等等。
因为我设计的时候,并没有从开始就考虑使用一个非常结构化的模式来设计,因此这个结构设计也显得比较简单,不过我个人比较喜欢这种简单明了的设计。本来计划这篇文章会包含代码的,可是发现现在已经很长了,只好在下一篇再贴上上面的一些重要代码。
相关文章推荐
- Step1帐户登录系统(2.基础代码)
- 【公开源代码】详述多用户博客程序开发过程-step by step(3)-【会员系统(登录)】
- Step1帐户登录系统(0.整体思路)
- Step1帐户登录系统(7.使用OpenSocial接口登录支持校内网用户的登录)
- Step1帐户登录系统
- 博客系统-程序结构-注册登录登出
- Step1帐户登录系统(9. 总结和源码下载)
- Step1帐户登录系统(10.在纯静态HTML环境下使用登录系统)
- pureftpd 启用系统帐户登录
- 如何防止同一帐户重复登录系统
- 博客程序开发历程【3】-[会员系统-登录验证]{附源码}
- xp中 “控制面板”->“用户帐户”->“更改用户登录注销方式” 出现 一个最近安装的程序已停用欢迎界面和快速用户切换
- 注册登录系统的基本逻辑与结构——ASP.NET(C#)源代码
- 使用远程桌面功能登录系统,常常遇到类似“由于帐户限制,你无法登录”的提示的解决办法
- SQL Server 2005 安装程序无法获取 ASP.NET 帐户的系统帐户信息
- SQL Server 安装程序无法获取 ASPNET 帐户的系统帐户信息
- SQL Server 2005 安装程序无法获取 ASP.NET 帐户的系统帐户信息
- 如何防止同一帐户重复登录系统
- 微信小程序购物商城系统开发系列-目录结构
- 配置树莓派(Raspberry Pi)上Raspbian系统为自动以root帐户登录(免密码登录)