本帖最后由 iegss 于 2010-10-13 10:59 编辑
ucenter不同域同步登录退出原理
同步的根本原理是通过设置p3p头来实现跨域访问,而ucenter只是一个用户和应用程序(不同域下的程序)管理中心,她负责用户的统一管理,和用户动作(如同步登录)通知各应用程序的代码生成。
如下图ucenter登录简单过程
应用程序是php的话就可以直接用ucenter带的客户端,如果你是java,asp的话就要自己按照ucenter的加密方式和接口参数自己写咯,这里以ucenter自带的客户端为列
1, 登录 (用到的函数 uc_user_login) ,如果登录成功生成同步登录js代码(用到的函数uc_user_synlogin),js代码如:<script src=”http://www.a.com/index.php/api/uc.php?time=1286877098&;code=加密后的数据” reload=”1″>,
2, 将生成的js代码嵌入到html中,向所有程序发送登录信息
3, 各应用程序解密code ,更新相应用户的登录的session及cookie
插件使用说明 (
ci_uc.rar
(42.74 KB, 下载次数: 227)
)
1. 插件对应ucenter 版本 1.5.2
2. ucenter 中应用设置注意
a. 应用的主 URL: http://www.a.com/index.php (如果你的ci程序有启url重写可以不要”/index.php”)
b. 应用接口文件名称: uc (注意不是uc.php哦)
3. 设置后,将config.inc.php 中的内容换成 ucenter 中 “应用的 UCenter 配置信息”中的内容。
4.修改api.php 中的相关处理函数。
如:
a. 登录函数
function synlogin($get, $post) {
$uid = $get['uid'];
$username = $get['username'];
if(!API_SYNLOGIN) {
return API_RETURN_FORBIDDEN;
}
header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);
/*你站点的登录处理,通常记录用户登录session*/
}
b.退出函数
function synlogout($get, $post) {
if(!API_SYNLOGOUT) {
return API_RETURN_FORBIDDEN;
}
header(‘P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”‘);
/*你站点的登出处理,通常删除用户登录session*/
$this->CI->session->sess_destroy();
} 原文转自http://www.iegss.cn/archives/153.html |