ucenter的實現原理簡單講解

整合了 ucenter就等於整合了整個PHP界的所有php程序。

一、功用

不對,何止整合了整個php界的所有php程序,而是整合了 ucenter就等於整合了所有的asp/asp.NET/php/jsp等其它語言的所有web應用程序。(因爲ucenter client的api開發包,dz會推出其它語言版)

而且所有整合的程序同步登錄,同步退出,同步修改密碼。最終用戶可以通過它輕鬆通行在各個應用之中,無需重複登錄、註冊、退出

一個id可以出入一個站內的所有程序,如cms和bbs,也可以一個id出入www.a.com和www.b.com及www.c.com

a.com的用戶可以和b.com的用戶互發短消息pm,a.com的用戶可以和b.com的用戶加好友。

而且可以實現站內信(pm)和其它任意站的任意程序的站內信(pm)互通。

可以實現www.a.com與[url]www.b.com及www.c.com[/url]共享一個用戶庫,www.a.com的用戶可以給www.b.com的用戶pm短信.

用戶組與discuz不對應的問題也得到解決。因爲一般應用程序的用戶組是單獨的一個應用,和discuz再沒有關係,而是和ucenter有關係,而ucenter沒有用戶組的概念。

二、整合方法

如果單說整合用戶的話,整合時應用程序的改動也非常小,原數據庫不用動,原寫cookies的代碼不用動,原寫數據庫session的代碼不用動,原來的程序不用怎麼動,只需改動以下4個文件:

longin.php register.php logout.php 修改密碼文件.php (忘記密碼.php不用動,用原來的就可以)

4個文件中加上和ucenterapi通信的語句和邏輯結構。

另需要針對ucenter新增加一個文件uc.php,這個文件就是應用程序接收ucenter傳來的指令並執行的文件。而且他利用p3p技術實現反向登錄a.com或是同時反向登錄a.com/b.com/c.com的dedecms或是phpcms或是任意所有程序。

共計改4個文件,增一個文件。

如果要是整合站內信pm,好友,頭像等功能,思路與方法和整合用戶類同。

另外有一點,在不同的系統之間註冊的用戶,在第一次登錄這個從來沒有登錄過的系統時,會讓激活。借用這個激活,可以讓用戶完善在本應用程序中的資料,如企業註冊資料。資料不完善,不可以激活。

如在bbs註冊一個用戶test,第一次來到b2b的程序中,這時,並不會自動登錄,而是要求用戶激活,而test在bbs註冊時填的字段與b2b中要求的不同。這時讓用戶完善資料。第二次來就會自動登錄。

三、 uc原理

以用戶登錄爲例介紹,其它註銷,改密碼,消息,頭像,好友均類同。

1.從用戶xxx在某一應用程序的login.php,輸入用戶名,密碼講起。
先用uc_user_login函數到uc server驗證此用戶和密碼,如正確,則寫入session,寫入cookies,並更新應用程序會員表中的登錄ip,登錄時間。用戶感覺不到這個過程。

2.然後通過uc_user_synlogin通知uc server 用戶xxx登錄成功,這個過程可能使用ajax,用戶感覺不到通知過程。

3.uc server收到這個消息後,馬上命令手下,把xxx登錄的消息,像令牌環一樣,發給所有願意接收(後臺中那個是否開啓同步登錄)這個消息的其它應用程序。其實就是帶參數訪問一下各應用程序的uc.php,用戶感覺不到這個過程。

4.各應用程序靠api下的uc.php來接收uc server發來的消息,並對uc server言聽計從,讓幹什麼就幹什麼。現在,收到讓xxx用戶在你的程序中登錄的命令,馬上執行。
並寫本應用程序的session,並且使用p3p, 寫入相同域或不同域的cookies. 用戶感覺不到這個過程。

5.最後所有和uc整合的程序,xxx均登錄成功。用戶從www.test.com/bbs登錄後, 跳到www.test.com/news同樣顯示登錄。因爲bbs 和news系統在後臺均已登錄。

6.應用程序與uc server的會話結束。

得益於uc設計的精巧過程,整個過程,用戶完全感覺不到ucenter的存在.這是整合程序歷史上的創新。完。

原文地址:http://blog.csdn.net/wenqingzzz/article/details/45577851

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章