Step1帐户登录系统(0.整体思路)


我一直想做一个帐户登录系统,到今天,终于做出了一个雏形,非常高兴,因此,我会在下面的几篇文章对这个系统进行详细的介绍,这是第一篇,介绍一下整体思路,到后面,基本上就是以代码为主了,先看个截图:

  这个系统起源于单点登录系统(实际上它本身也是一个单点登录系统),这个技术现在在互联网上使用的十分广泛了,毕竟,无论是大的还是小的网站,是否有多个域名,都可太可能为每个栏目来设计一个单独的登录系统,等不可能让用户在每个栏目都去输入帐号密码,下面我粗略的图解一下单点登录系统(这篇文章之中提到的登录都应该兼容跨域名之间的接口的,如果在同一个域名内,将会容易得多)

  以上这个图只是一个登录流程的顺序图,按照这个图,我们一步一步看一下:

  1.用户要求进行某一操作;

  2.Web栏目通过自身的Cookie或Session判断用户是否已经登录,如果已经登录,则直接处理,否则,将用户导向到登录系统,并附带上参数通知登录系统在登录完成之后返回到哪一个页面;

  3.登录系统通过Cookie或Session判断用户是否已经登录,如果已经登录,则直接将用户跳转回栏目,并附带用户的帐户信息,如果没有登录,则提示用户登录;

  4.用户输入帐户密码;

  5.登录系统记录判断用户登录是否正常,然后先设置自己的Cookie或Session,再使用用户的帐户信息跳转到对应的栏目;

6.栏目收到跳转回来的请求之后,先验证请求,然后设置自己的Cookie,再根据用户的帐户信息向用户返回内容。

  本来这些文字描述都可以直接直观的画在图上的,不过我的发现机器上没有工具,连Word都没有,只好随便用画图画了一幅,不过因为大家对单点登录应该都很了解,因此,肯定会跳过不看,也就无所谓了。

  我并不是要做一个单点登录系统,我主要是想,现在的网站,无论大小,都有一个注册、登录什么的,对用户造成很大的困扰,用户不可能去记那么多帐号密码的,对网站来讲,维护用户的数据也是一个很难的问题,因此,如果网站能够相互公用用户信息,让用户的一个密码在多个网站都可以登录,这是一个皆大欢喜的事情。这个思路,实际上就是传说中的OpenId,我之所以没有去专门研究OpenId,是因为现在国内知道的人很少,而且OpenId还是有一定的局限性,我仔细的研究了各个大的网站提供的对外接口(国内的很少,基本都是国外的),决定写一个基于多种网站用户来源的单点登录系统,这就是刚才看到的Step1帐户登录系统.

  其实,总体原理非常简单(因为上面的那幅图画起来很费劲,这里就不想再画图了),只要想象上图之中的Passport服务器同时又是另外一个或多个其他Passport服务器的客户端,就会觉得一切都容易起来:这个Passport服务器先作为Google,Live,Yahoo等网站的帐户服务的客户端,将这个服务都整合在一起,然后作为一个统一的Passport提供给自身的一个或多个网站的栏目。

  例如,参照如下流程:

  1.用户打开http://www.dituren.cn/ ,并点击右上角的“登录”;

  2.页面会转向到http://account.step1.cn/account/login.aspx ,开始进行登录,也就是文章开头看到的那张图片
3.在页面上显示了多种帐户来源类型,用户选择自己有帐号的一种(以Google为例);

  4.帐户服务器会将用户转向到Google的登录页面(此接口由Google Accounts Authentication 提供);

  5.Google会首先让用户输入帐号密码,然后出现一个页面提示用户第三方网站正在请求帐户信息,请用户确认;

  6.用户确认后,则Google会返回到一个页面,这个页面URL是在第4步的时候随参数发送给Google的;

  7.在这个页面上接收Google传递的参数,写入到Cookie,然后将用户再次转向到最终栏目页面;

  8.栏目写入Cookie,整个登录过程完成。

  这个过程所起来比单点登录难不了多少,不过最大的问题在于这些网站提供的帐户服务互不相同,而且文档并不是很健全,目前研究这个服务的人又不多(国内更加少了),因此开发的时候不停的遇到很多很郁闷的问题(至今我都没有使用Google的OAuth成功登录,后来只好用AuthSub),因为不停的遇到一些小问题而且没有代码参考,心情十分郁闷,在最郁闷的时候,我决定将这所有的代码都整个公开提供下载,以减少还有别的同样对这个感兴趣的人研究的时候走的弯路。

  我会首先顺序次在博客上贴出每一个网站的帐户接口的详细使用和代码,等到这个服务完善之后,就将整个源码提供下载。

  预览地址是http://account.step1.cn/account/login.aspx ,目前就能登录,登录之后什么都不能做,呵呵!

  闭关说明:本来这个文章应该是叫“闭关纪要6”的,不过因为这次研究的东西会自成一个系列,而且本身会专业一点,不适合采用一个太不专业的名称,因此,没有采用,不过,编号还是被保留,因为我最终还是要记录闭关期间的研究成果的



相关阅读:
在设计视图中Access允许的九种数据类型
用Windows Server Backup搞定服务器备份
w3c标准自适应高度height100%不起作用的问题分析
Javascript 检测、添加、移除样式(className)函数代码
推荐网页前端设计:适合JavaScript新手的书籍
VBS教程:属性-DriveLetter 属性
又一个漂亮的导航栏的下拉菜单
Oracle性能调整与优化(三)
6月第二期 开源资讯大串烧
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
Win 2003 DNS服务器配置方法
VS2008与.NET 3.5的JS智能感知和调试
网络之美 JavaScript中Get和Set访问器的实现代码
织梦DedeCms实现调用单页文章内容的方法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 与朋友一起走过的日子作文550字 带香烟到学校的检讨书 大学生积极分子思想汇报范文 县烟草专卖局科学发展观心得体会 凌驾2作文500字 那一天 悠闲在快乐 徘徊中国 国税分局建设平安单位工作总结 关于夏天的作文150字 青春的炸雷第三章-飞出大山的梦想 在 路 上-------- 走麻庵(原创) 励志日志:教师节随想 佛教小故事之有智慧的选择 小学高级教师职称评定述职报告 【精品】成语故事教学反思 成功人的几个要点 有多少傻瓜,在爱一个不可能的人 好事不带大小作文500字 工商所半年工作总结 高三:一本好的“错题集”引领成功之路 2010年上半年综治工作总结 可以累,不能退 初中初一作文750字:新朋友 高一入团申请书400字 来源于历史故事的成语 几株酸枣树 三峡大瀑布之旅作文 2016杜绝商业贿赂承诺书 检察院实习周记 就是这样的我们,世俗不愿接纳的我们。 我和新华字典交朋友 别人援手之际自己也伸出手来 随烟 《登金陵凤凰台》教案2 经典人生短语大全:人生快不快乐看心情,幸不幸福看心态。 教务处工作述职报告 毕业十周年聚会活动方案 美丽的布里斯班植物园500字 在小学毕业典礼上的讲话作文800字 金秋的童话 难忘厦门行700字 男女搞笑幽默短信笑话-碰上女色狼怎么办 有关于清明节踏青的作文 关于难忘的一句话作文600字 风中那不变的承诺 广州高考零分作文 国旗下的演讲作文750字 永生的眼睛读后感200字 矛盾纠纷排查化解汇报

Copyright © 2016 phpStudy |