【转】 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;(这里只是我建议修改,以便于我下面写的配置); ...
随机推荐
- JS对于Android和IOS平台的点击响应的适配
IOS点击事件 Click 300毫秒点击延迟 解决办法: 参考:http://cuiqingcai.com/1687.html 可判断设备 if (/(iPhone|iPad|iPod|iOS)/i ...
- 9、C#基础整理(多维数组)
多维数组 1.二维数组: 表示方法: int[y,x],x.y是索引,y代表行,x代表列. 例: , ]{ {,,}, {,,} };//{}可以不写 修改方法: second[, ] = ;//表示 ...
- buildroot ntp 网络时钟同步
/********************************************************************** * buildroot ntp 网络时钟同步 * 说明: ...
- Open vSwitch简述
一.基础术语 1.Packet (数据包):网络转发的最小数据单元,每个包都来自某个端口,最终会被发往一个或多个目标端口,转发数据包的过程就是网络的唯一功能. 2.Bridge (网桥):Open v ...
- 装载: Matlab 提取矩阵 某一行 或者 某一列 的方法
比如,从一个6*6矩阵中,提取它的第一行元素,形成一个6维行向量. A(i,:)行 A(:,i)列 方法: A(i,:) 提取矩阵A的第 i行 A(:,i) 提取矩阵A的第 i列 给你个例子: ...
- safari穿越到chrome
tell application "Safari" set theURL to URL of front document set the clipboard to theURL ...
- AndrdoidStudio 2个jar包引起的异常Duplicate files copied in APK META-INF/LICENSE.txt
在build.gradle中与compileSdkVersion **.buildToolsVersion “**.**.*"或defaultConfig 同级添加如下代码 packagin ...
- 利用freemarker生成xml
package com.mooc.freemarkerXML; import java.io.IOException; import java.io.StringWriter; import java ...
- leetcode 151. Reverse Words in a String --------- java
Given an input string, reverse the string word by word. For example,Given s = "the sky is blue& ...
- leetcode 130. Surrounded Regions----- java
Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...