使用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 信息采集程序代码
Mar 17 PHP
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 PHP
PHP可变函数的使用详解
Jun 14 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
使用symfony命令创建项目的方法
Mar 17 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
PHP基本语法实例总结
Sep 09 PHP
php中strlen和mb_strlen用法实例分析
Nov 12 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
php实现等比例压缩图片
Jul 26 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 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
dedecms模板标签代码官方参考
2007/03/17 PHP
PHP 图片水印类代码
2012/08/27 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
javascript中的对象创建 实例附注释
2011/02/08 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
python MD5加密的示例
2020/10/19 Python
数控专业推荐信范文
2013/12/02 职场文书
顶岗实习接收函
2014/01/09 职场文书
投资意向书范本
2014/04/01 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
百家讲坛观后感
2015/06/12 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python