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 交通频道 作文范文 充满向往和期待的天真 保持共产党员先进性教育自查报告 寒凉秋日书几行 圣诞与元旦双节祝福短信 请爱护我们的家园作文500字 写于凌晨一点半 细雨绝夜作文100字 学习雷锋事迹材料 小学六年级作文750字:我的电脑 描写心理活动的佳句 我愿化作… 放风筝(转载) 学校2010年度工作计划范文 小学五年级作文1200字:幽默老英 2011年上半年乡政府工作总结 别让中国梦成为梦作文 关于新年礼物作文:天文望远镜 金鱼吃苍蝇450字 春天的感动作文600字 家,有我们留下的痕迹 婆婆也是妈第1,2,3,4,5,6集剧情介绍 都江堰之行作文600字 幼儿园小班数学说课稿:喂宝宝 网站设计规划书 教学论文趣味课堂培养学习兴趣 精彩的马戏作文500字 军训心得650字 小学六年级作文700字:都是贪心惹的祸 孤者 学校办公室主任、政教处主任职责 校门口的一出戏作文400字 女性求职的面试回答技巧 囚首垢面的鲁迅 高中高二作文900字:小妮子的快乐生活1 改变自己 心累到一定的程度,连生气的力气都没有了 22句乐嘉写给所有女人的话 高中高二作文1000字:你不配做我的朋友 小照相馆 那年夏天,爱情飞的好远好远。 小学xxxx年度第一学期少先队工作计划 女警三八妇女节征文 哦,我明白了作文500字 亲情 入少先队老师发言稿 读《天职》有感作文700字 My mother 女性励志书籍《不畏将来不念过去》 励志故事:完美的失败 我错了 男方婚礼答谢词

Copyright © 2016 phpStudy |