使用ucenter实现多站点同步登录的讲解


Posted in PHP onMarch 21, 2019

做Web开发经常会要求实现多站点同步登录的情况,对于PHP开发来说,我们可以使用ucenter来实现多个站点同时登陆同时退出,用户同步的功能。下面我们一起看一下ucenter是如何实现同步登陆的。

首先站点都要引入一个uc_client这样一个客户端,以登陆为例,登陆时首先会调用一个外部函数,uc_client/client.php下的uc_user_login检查是否存在此用户,如果正确则继续执行登陆代码,检测此用户过程:通过用户是以什么方式连的uc(mysql还是http post)然后去相应地用不同函数来检测用户,检测完成后实现本地登陆,代码自己写,然后让其他应用程序也登陆,此时调用外部函数uc_user_synlogin,过程如下:

Uc_user_synlogin调用uc_api_post来实现是要做哪个模块,比如现在就是user模块,传的参数是user_id,具体这是怎么实现的没再仔细看,总之是将数据发送到uc_api即你的ucenter地址的index.php,同时附一些参数,根据这些参数然后再去读里面所有可通信的应用程序,让他们也实现登陆,这是其他程序的事儿了。

通知其他应用程序主要是通过ucenter,去向各应用程序下的api/uc.php发送一些数据,这些数据由uc.php接到请求然后去执行相应的登陆操作等。

下面举个例子描述一下整个过程

1.用户xxx在某一应用程序的login.php,输入用户名,密码。先用uc_user_login函数到uc server验证此用户和密码,如正确,则写入session,写入cookies,并更新应用程序会员表中的登录ip,登录时间。用户感觉不到这个过程。

2.然后通过uc_user_synlogin通知uc server 用户xxx登录成功,这个过程可能使用ajax,用户感觉不到通知过程。

3.uc server收到这个消息后,马上命令手下,把xxx登录的消息,像令牌环一样,发给所有愿意接收(后台中那个是否开启同步登录)这个消息的其它应用程序。其实就是带参数访问一下各应用程序的uc.php,用户感觉不到这个过程。

4.各应用程序靠api下的uc.php来接收uc server发来的消息,并对uc server言听计从,让干什么就干什么。现在,收到让xxx用户在你的程序中登录的命令,马上执行。并写本应用程序的session,并且使用p3p, 写入相同域或不同域的cookies.  用户感觉不到这个过程。

5.最后所有和uc整合的程序,xxx均登录成功。用户从3water.com登录后, 跳到3water.com同样显示登录。

6.应用程序与uc server的会话结束。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
类的另类用法--数据的封装
Oct 09 PHP
如何在PHP中使用Oracle数据库(2)
Oct 09 PHP
php chr() ord()中文截取乱码问题解决方法
Sep 08 PHP
php将会员数据导入到ucenter的代码
Jul 18 PHP
检测png图片是否完整的php代码
Sep 06 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
PHP开发框架kohana3 自定义路由设置示例
Jul 14 PHP
Linux下PHP加速器APC的安装与配置笔记
Oct 24 PHP
PHP模块memcached使用指南
Dec 08 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 #PHP
使用PHP反射机制来构造"CREATE TABLE"的sql语句
Mar 21 #PHP
启用OPCache提高PHP程序性能的方法
Mar 21 #PHP
Discuz不使用插件实现简单的打赏功能
Mar 21 #PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 #PHP
PHP实现的数据对象映射模式详解
Mar 20 #PHP
PHP单例模式数据库连接类与页面静态化实现方法
Mar 20 #PHP
You might like
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
详解javascript void(0)
2020/07/13 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
党员教师工作决心书
2014/03/13 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
筑梦中国心得体会
2016/01/18 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
浅谈JS的二进制家族
2021/05/09 Javascript
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript