【转】 Ucenter同步登录原理解析
应用中调用函数us_user_synlogin并输出
echo uc_user_synlogin($uid);
解析:
1. 该函数位于client.PHP中
2. 作用实质上是调用ucenter user模块的onsynlogin动作(该动作位于ucenter/control/user.php中)
onsynlogin首先会根据uc_user_synlogin传过来的uid获取用户的数据,然后获取当前所有允许异步登录的应用的配置信息
最终将生成几个<script src="app_uc_php_url?param"></script>这样的代码返回给uc_user_synlogin
app_uc_php_url:每个应用中的uc.php的地址
param:使用应用的authkey作为密钥加密过的用户信息以及将要调用的位于uc.php中的syslogin动作名
3. 这些script标签会作为uc_user_synlogin的返回值返回然后被输出
4. 输出时script标签的src将会被执行,即uc.php中的syslogin动作会执行(注意:每个应用中的uc.php的syslogin此时都将依次被执行,因为每个应用都有对应的script标签输出)
5. 每个应用的syslogin动作获得参数都是一致的,统一都为用户信息,但对这些信息的处理是可以不一致的,比如a应用可以将用户的ID和密码使用自身的authkey当做密钥加密后存储到cookie,而b应用则可以选择将用户的ID和用户名存储到cookie
6. 因为每个应用存储到cookie中的信息可能不同,且使用了自身的authkey加密,所以只有应用自身可以解码这段数据,其他应用即使可以获取这段数据也是无法解码的
7. 所以要实现账号在a应用登录后,在b账号也可以同步登录,那么b应用就应该首先获取自身uc.php的synlogin被调用后生成的cookie信息,然后使用自身的authkey解码,取出存储的信息,放到当前应用的session中,表示该用户已经登录.....
done
from:http://blog.csdn.net/w6611415/article/details/8933010
【转】 Ucenter同步登录原理解析的更多相关文章
- UCENTER同步登录工作原理和配置要点
ucenter的同步登录原理: 1)Ucenter是和uc_client同步的.每个PHP应用,加入了UCENTER后,都会在主目录下有个UC_CLIENT目录.这个目录里,都有一个client.PH ...
- ucenter 同步登录总结
部署: discuz默认安装后就安装了uc_server应用 各应用根目录必须有uc_client文件夹. 下载ucenter程序查看范例程序 应用管理中,应用的主 URL必须指向到应用的根目录,应用 ...
- CAS单点登录原理解析
转自: https://www.cnblogs.com/lihuidu/p/6495247.html 1.基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名 ...
- CAS单点登录原理解析(转载)
1.基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从 ...
- ucenter 整合同步登录的内部实现原理及thinkphp整合ucenter
1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证.2.如果验证成功,将调用位于 ...
- ucenter 整合同步登录的内部实现原理
1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位 ...
- 简单分析ucenter 会员同步登录通信原理
1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位 ...
- Discuz x3 UCenter实现同步登陆原理
1.Discuz x3 的登录页面URL是:/member.php?mod=logging&action=login 2.这个登录页面,登录提交的地址是: <form method=&q ...
- ucenter通信实现同步登录、同步退出(详细)
首先,需要去官网下载一个ucenter的包.然后解压下来. 先把ucenter/ucenter这个文件夹复制到你的项目根目录下改名为uc_server;(这里只是我建议修改,以便于我下面写的配置); ...
随机推荐
- PHP Mail 简介
PHP mail() 函数用于从脚本中发送电子邮件. mail(to,subject,message,headers,parameters): 参数 描述 to 必需.规定 email 接收者. su ...
- HDU 4911
http://acm.hdu.edu.cn/showproblem.php?pid=4911 一场多校的签到题,树状数组离散化求逆序数 #include <iostream> #inclu ...
- Magento速度优化
一.Magento Compiler可以提高 25% 到 50% 速度 Magento的性能一直是大家比较关心的焦点,现在Magento最新的版本 1.3.2.2 增加了 Magento Compil ...
- 删除要被替换的元素的所有事件处理 程序和 JavaScript 对象属性
使用本节介绍的方法替换子节点可能会导致浏览器的内存占用问题,尤其是在 IE 中,问题更加明显.在删除带有事件处理程序或引用了其他 JavaScript 对象子树时,就有可能导致内存占用问题.假设 某个 ...
- PHP语言基础(标记、注释、变量、数组、常量、函数)
PHP标记风格 1.xml风格(标准风格推荐使用) 代码如下: <?php echo"这是xml风格的标记"; ?> xml风格的标记是常用的标记,也是推荐使用的 ...
- ASP连接access 数据库的增删改查 - imsoft.cnblogs
假设数据库文件名叫data.mdb里面有2个表:1.admin2.news假设admin是保存用户名和密码,里面有字段:UserName,PassWord.假设我们要在判断一个用户名叫name,密码是 ...
- yii2构造方法
控制器文件下面建 一公共控制器:: CommonController.php 里面写一个空方法 : public function init(){} 然后在你要写构造函数的控制器类里写一个方法 ( ...
- ES6 — 数组Array
ES6对数组引入了几个新函数: (1) Array.of() 作用是将一组数值,转换为数组. Array.of(1,2,3,4); //[1,2,3,4] (2) Array.from() 作用是把类 ...
- codeforces hungry sequence 水题
题目链接:http://codeforces.com/problemset/problem/327/B 这道题目虽然超级简单,但是当初我还真的没有想出来做法,囧,看完别人的代码恍然大悟. #inclu ...
- python 文件编码
错误:UnicodeDecodeError: 'gbk' codec can't decode byte 原因:文件为utf-8编码,系统却用gbk去解码,必然出现错误. 解决方法: with ope ...