iegss 发表于 2010-10-13 10:26:23

在CI中与ucenter同步实现插件

本帖最后由 iegss 于 2010-10-13 10:59 编辑

ucenter不同域同步登录退出原理
同步的根本原理是通过设置p3p头来实现跨域访问,而ucenter只是一个用户和应用程序(不同域下的程序)管理中心,她负责用户的统一管理,和用户动作(如同步登录)通知各应用程序的代码生成。
如下图ucenter登录简单过程

http://www.iegss.cn/wp-content/uploads/2010/10/uc_lc-300x176.jpg

应用程序是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

插件使用说明 ()
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

snllll 发表于 2010-10-26 04:50:02

留着研究,哎呀,这个东西对我真的是太有用了!

同步注册、积分同步、就可以把发帖的积分换算给会员成长了。谢谢~

longjianghu 发表于 2010-11-17 20:47:23

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');这是什么东东?

斯达客 发表于 2011-10-12 12:27:57

我很感谢这些原创作者把自己的东西分享出来, 但是你的东西不全,分享是与他人共同享受、使用、行使,你的初衷是好的,但是你的代码不全,坏人 呵呵 :lol

viqecel 发表于 2013-7-13 22:17:12

可惜没有同步注册到应用程序的接口
页: [1]
查看完整版本: 在CI中与ucenter同步实现插件