使用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 相关文章推荐
smarty 原来也不过如此~~呵呵
Nov 25 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
phpnow php探针环境检测代码
Nov 04 PHP
php实现encode64编码类实例
Mar 24 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP attributes()函数讲解
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代码
2012/09/14 PHP
PHP正则验证Email的方法
2015/06/15 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
简单介绍Python中的len()函数的使用
2015/04/07 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
python实现批量图片格式转换
2020/06/16 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
Python中有几个关键字
2020/06/04 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
反对邪教标语
2014/06/30 职场文书
八项规定对照检查材料
2014/08/31 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
给老婆的道歉信
2015/01/20 职场文书
谢师宴邀请函
2015/02/02 职场文书
自荐信模板大全
2015/03/27 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript