用户登陆discuz,调用on_login() , on_login ()里调用了userlogin() 验证用户信息,正确的话,调用uc_user_synlogin(),然后调用uc_api_post('user', 'synlogin', array('uid'=>$uid)),向uc_server/index.php 传输数据,model为user,action为synlogin,然后调用uc_server/control/user.php 里的onsynlogin方法,通过foreach循环,以javascript的方式通知uc应用列表中开启同步登陆的应用进行同步登录;discuz自身的ucenter通信到此结束;
discuz外的应用api/uc.php接收通知并处理get过来的数据,并在函数synlogin(位于uc.php中)通过函数authcode加密数据,用函数wp_set_auth_cookie设置cookie。各个应用用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过,从而让用户可以自动登陆。
discuz:
用户登陆
-> /member.php
-> /source/module/member/member_logging.php
-> /source/class/class_member.php(on_login )
-> /uc_client/client.php(uc_user_synlogin
-> uc_api_post('user', 'synlogin', array('uid'=>$uid)) )
-> uc_server/index.php
-> uc_server/control/user.php(onsynlogin)
-> 以javascript 方式通知uc应用列表中开启同步登陆的应用进行同步登录
wordpress:
get方式接受ucenter传过来的数据
-> /wp-content/plugins/ucenter-integration/api/uc.php (synlogin)
-> 通过函数authcode加密数据,用函数wp_set_auth_cookie设置cookie
-> 各个应用用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过,从而让用户可以自动登陆。