现在的位置: 首页 > 综合 > 正文

Step1帐户登录系统(1.程序结构)

2011年02月18日 ⁄ 综合 ⁄ 共 2561字 ⁄ 字号 评论关闭

        上次粗略的讲解了Step1帐户登录系统的思路之后,这一次我将介绍一下我的程序实现的结构,从这篇文章之后,就将细化到每一个接口,例如Google,Yahoo,Live等,对这些接口的使用进行详细的介绍。
        先看看文件结构,说起来很简单因为一共只有以下三个文件:
        1.Login.aspx,最重要的页面,在用户登录时让用户选择采用哪种帐号登录,用户选择对应的帐号之后,将用户转向到对应的网址;
        2.Logout.aspx,将用户注销,并转向到原来的URL;
        3.Handler.aspx,接收帐户服务器(例如Google的服务器)回发的登陆请求,根据回传的资料请求用户的信息,设置到Cookie并将用户转向到原先请求的网址;

        再看看配置,为便于扩展和开发,我采用了在Web.config文件之中建立XML格式的配置的方法,我的网站目前的配置如下(其中的***是本站的私有Key,因此被我屏蔽了):

 

Web.Config配置

 

        简单的介绍一下配置项的内容,根节点AccountServerConfiguration表明这是一个帐户登录系统配置的内容,而它的几个属性是登录系统的全局配置,cookieName代表写入到Cookie的键名称,cookieDomain是写入Cookie的域,paramName是向客户Web栏目回传登录信息的参数名称,rootUrl是整个程序的部署URL。

        AccountServers节点下的每一个AccountServer代表一个种登录类型服务器,属性name是该类型的唯一标示,属性type是该类型对应的实现类的名称,其他所有的属性都是对该类型的配置参数,例如对于Yahoo 的BBAuth,就必须配置在Yahoo登记的appid等。

        了解文件结构和配置结构之后,再对照一下类的设计结构:

Step1帐户登录的实现架构

        上图之中的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的访问等等。

        因为我设计的时候,并没有从开始就考虑使用一个非常结构化的模式来设计,因此这个结构设计也显得比较简单,不过我个人比较喜欢这种简单明了的设计。本来计划这篇文章会包含代码的,可是发现现在已经很长了,只好在下一篇再贴上上面的一些重要代码。

抱歉!评论已关闭.