使用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连mysql和oracle数据库性能比较
Oct 09 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
php从字符串创建函数的方法
Mar 16 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
10个对初学者非常有用的PHP技巧
Apr 06 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
ThinkPHP实现分页功能
Apr 28 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
PHP反射学习入门示例
Jun 14 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 UTF8 文件的签名问题
2009/10/30 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
Python脚本暴力破解栅栏密码
2015/10/19 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
医科大学毕业生自荐信
2014/02/03 职场文书
学生喝酒检讨书
2014/02/06 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
家长对孩子的评语
2014/04/18 职场文书
养牛场项目建议书
2014/05/13 职场文书
体育个人工作总结
2015/02/09 职场文书
销售合作意向书范本
2015/05/08 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
公司周年庆寄语
2019/06/21 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL