使用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配置心得包含MYSQL5乱码解决
Nov 20 PHP
php URL编码解码函数代码
Mar 10 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
那些年一起学习的PHP(一)
Mar 21 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 PHP
PHP中开启gzip压缩的2种方法
Jan 31 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
php实现图片按比例截取的方法
Feb 06 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
Jul 24 PHP
Yii框架安装简明教程
May 15 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 中include()与require()的对比
2006/10/09 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
js实现文字滚动效果
2016/03/03 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
实例讲解Python3中abs()函数
2019/02/19 Python
windows支持哪个版本的python
2020/07/03 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
汽修专业自荐信
2014/07/07 职场文书
自荐信格式范文
2015/03/04 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书