【轉】 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM