應用中調用函數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
