使用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 新手入门教程
Aug 03 PHP
PHP 强制下载文件代码
Oct 24 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
Feb 03 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
php中namespace及use用法分析
Dec 06 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
PHP 使用二进制保存用户状态的实例
Jan 29 PHP
PHP生成推广海报的方法分享
Apr 22 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
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
js 设置选中行的样式的实现代码
2010/05/24 Javascript
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
javascript实现简易计算器
2017/02/01 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python中操作MySQL入门实例
2015/02/08 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
python绘制地震散点图
2019/06/18 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
详解Python 函数参数的拆解
2020/09/02 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
资深地理教师自我评价
2013/09/21 职场文书
消防安全员岗位职责
2014/03/10 职场文书
初三学习计划书范文
2014/04/30 职场文书
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers