使用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 相关文章推荐
PHP 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
PHP nl2br函数 将换行字符转成 <br>
Aug 21 PHP
php 从数据库提取二进制图片的处理代码
Sep 09 PHP
php获取淘宝分类id示例
Jan 16 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
Yii实现显示静态页的方法
Apr 25 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
php实现微信支付之现金红包
May 30 PHP
PHP addAttribute()函数讲解
Feb 03 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程序员的技术瓶颈分析
2011/07/17 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
javascript版2048小游戏
2015/03/18 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
详解vue 组件
2020/06/11 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
10个易被忽视但应掌握的Python基本用法
2015/04/01 Python
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
酒店服务与管理毕业生求职信
2013/11/02 职场文书
岗位职责定义及内容
2013/11/08 职场文书
中药学自荐信
2014/06/15 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
青年志愿者活动感想
2015/08/07 职场文书
2015年国庆节寄语
2015/08/17 职场文书