ucenter的實現原理簡單講解

2021-07-02 07:27:00 字數 1995 閱讀 7572

整合了 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.從使用者***在某一應用程式的login.php,輸入使用者名稱,密碼講起。

先用uc_user_login函式到uc server驗證此使用者和密碼,如正確,則寫入session,寫入cookies,並更新應用程式會員表中的登入ip,登入時間。使用者感覺不到這個過程。

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

3.uc server收到這個訊息後,馬上命令手下,把***登入的訊息,像令牌環一樣,發給所有願意接收(後台中那個是否開啟同步登入)這個訊息的其它應用程式。其實就是帶引數訪問一下各應用程式的uc.php,使用者感覺不到這個過程。

4.各應用程式靠api下的uc.php來接收uc server發來的訊息,並對uc server言聽計從,讓幹什麼就幹什麼。現在,收到讓***使用者在你的程式中登入的命令,馬上執行。

並寫本應用程式的session,並且使用p3p, 寫入相同域或不同域的cookies.   使用者感覺不到這個過程。

5.最後所有和uc整合的程式,***均登入成功。使用者從www.test.com/bbs登入後, 跳到www.test.com/news同樣顯示登入。因為bbs 和news系統在後台均已登入。

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

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

ajax原理的簡單實現

ajax的主要作用就是不重新整理頁面更新頁面的內容,也就是非同步傳輸。用來顯示ajax響應的div。下面就是一段使用ajax的簡單示例。function ajaxrequest else if window.activexobject if req return false req.onreadys...

dbUtils簡單實現原理

在資料庫初級階段,通過連線池連線資料庫,然後在將查詢的結果轉換為物件,過程太過複雜,以下便是實現對此類過程的簡單封裝,另外可以根據此類的封裝,簡單的理解一下spring 中jdbctemplate的query 和update 方法。public class dbutils public dbutil...

簡單promise實現原理

promise可以有三種狀態,分別是pedding fulfilled rejected pending promise物件例項建立時候的初始狀態 fulfilled 可以理解為成功的狀態 rejected可以理解為失敗的狀態 構造乙個promise例項需要給promise建構函式傳入乙個函式。傳入...