使用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获取远程图片并把它保存到本地的代码
Apr 07 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
Apr 21 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
又一个PHP实现的冒泡排序算法分享
2014/08/21 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
编辑个人求职信范文
2013/09/21 职场文书
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
董事长秘书职责
2014/01/31 职场文书
领导干部失职检讨书
2015/05/05 职场文书
高二数学教学反思
2016/02/18 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
nginx.conf配置文件结构小结
2022/04/08 Servers