兩個網站資料同步與登入的有關問題(CSDN如何做的?)
來源:互聯網
上載者:User
兩個網站資料同步與登入的問題(CSDN怎麼做的?)
hi
項目中遇到一個問題,想聽聽各位的思路
有兩個網站,一個是用asp.net開發的,資料庫是mssql
另外一個是用php,資料庫是mysql, 現在需要做到:
兩個網站的使用者資料同步,即在任何一個網站上註冊,在另外一個網站上都可以登入,除了登入資訊要同步以外,還需要同步積分,即在兩個網站上搞一些行為,都可以獲得積分,兩個網站上都可以花這些積分
兩個網站部署在同一個機房,web伺服器可以高速的訪問db server, 兩個網站用的是同一個網域名稱的不同的子網域名稱,想問問有什麼思路讓這兩個網站同步,如何?single sign on,有沒有什麼比較成熟的做法或者架構可以選用?
另外:1 “兩個站”是不跨domain的~~ 2 我也想問問CSDN是怎麼與uchome整合的?
謝謝
------解決方案--------------------
你給的分有點少啊!
關於你說的效果!有多種實現方式!
1.webservice
2.共用一部分資料庫資料(反正一機房)
3.xxxx方式
------解決方案--------------------
用ucenter要求你要有一個asp的解密協議同php的一樣的。
其他的都較容易。
由ucenter分發登入資訊並同步。
如果你用web服務,這個可能只能是被動的吧。退出不同步吧。
被動式的,需要檢查時去webserver去查一下有沒有登入或退出。如果有,則,認為登入。 這個需要程式經常或在有必要時,要檢查webserver. 如果一應用退出,除非另一程式檢查,否則他不會退出。
------解決方案--------------------
可以通過共用SESSION的方式來實現:
看UCENTER同步機制談SSO
先說說SSO(單點登入),它的大致原理是所以網站會有一個公用的使用者認證 系統,所有的登入登出都由此系統來處理。我們可以將其理解成網站C,現在有A B兩個站 點需要同步,在使用者訪問A的時候,A先去訪問C,看使用者是否已在C有登記,沒有的話直接 跳轉到C去登入,成功後跳轉到A,並且在A上存了一個COOKIE來保留使用者資訊。此時A登入 成功。當使用者再去訪問B網站的時候,系統將會把COOKIE的值一同返給證明伺服器,驗證其 是否合法,如果合法的話,認定使用者已登入,無需重新登入,如果有更多網站的話,道理 相同,這樣就實現了多個網站同步功能。(這裡每個網站的使用者會話機制可以不同,我們 可以根據認證端返回的資訊使每個網站構建自己應用的會話資訊。)
所以為了 完成一個簡單的SSO的功能,需要兩個部分的合作:
1、統一的身份認證服務。
2、修改Web應用,使得每個應用都通過這個統一的認證服務來進行身份效驗。
再說說UCENTER,提到這個,用過康盛產品的人肯定很熟悉,就是它將康盛的 多個產品聯絡到了一起,DISCUZ、SUPESITE、UCHOME等等,都可以通過它做到使用者同步。 前面的一篇文章《UCenter跨域、單點登陸機制分析》
http://www.trindo.cn/? action=show&id=60已經大致分析過其實現機制,主要還是登入登出任何一個網站 的時候,去批量處理所有存在於UCENTER中的網站列表,實現其同步的原理。
看到這裡,我們可以發現其實UCENTER就是一個簡單的SSO。但是其具有局限性,當需要同 步網站多的時候,UCENTER處理起來會很吃力(這點很多網友應該深有體會)。而如果我們 採用普通的處理機制,無論有多少個網站,根本不受影響。因為只有我們用到某個網站的 時候,此網站才會與認證系統互動,不會浪費資源。
前段時間做了一個項目就 遇到了一個JSP網站與PHP網站同步的需求,這裡我就用到了一個同步PHP檔案,此檔案的主 要用途在於一個PHP與JSP加密解密通用函數encrypt,decrypt。認證系統是用JSP編寫的。 這個PHP同步檔案包含在使用者需要登入的地方,當使用者訪問此頁面時,(如果已在主站登入 )系統會將本地存在的COOKIE資訊拋給認證系統,經過認證處理後,如果正確則返回使用者 名,在PHP這邊就可以根據使用者名稱來處理這邊的會話機制,達到登入的目的,如果認證失敗 ,則直接跳轉到認證系統進行認證。