Web系統單點登入實現

2022-03-22 09:25:08 字數 1228 閱讀 6425

隨著使用者不斷擴大的需求,更多的系統被建造起來。為了獲得更好的使用者體驗,需要實現使用者單點登入。所謂單點登入,就是使用者在乙個系統上登入後,其他系統就不需要重複登入。單點的登入的好處很明顯,提高了使用者體驗度。如何實現單點登入,在這裡我提供兩種解決方案:

1.一級網域名稱相同,通過共享cookie來實現

有a.the.com和b.the.com  a b兩個站點, 只要在a,b任何乙個站點登入後,兩個**就都可以使用,不需要在另乙個站點登入了。而通過基於cookie的實現方式,前提是兩個系統共享一級網域名稱,並且使用者要可以唯一標示。上面這兩個站點的一級網域名稱是the.com,我們只需要將cookie的domain屬性設定為the.com;具體處理過程如下:當使用者在其中某乙個站點登入,就設定乙個cookie資訊,該cookie包含標識使用者id,為了安全,還需要利用對該cookie的值加密。當使用者訪問其他**的時候,首先判斷是否存在cookie,如果有的話,便解密該cookie,獲取使用者資訊,設定使用者為登入狀態。

下面是php示例**

function login()    //正常的登入

funtion sign()

}

這裡需要注意的是:加解密一定需要做安全驗證。但是這個方法也不夠完美,兩個站點必須有相同一級網域名稱;另外這種完全基於cookie的方式,安全性不夠高。

2.採用專門登入系統。

所有的站點共享乙個登入系統;當使用者在其中的乙個站點登入成功時, 該系統呼叫其他站點的登入介面,完成使用者在其他站點的登入,同時設定相應的登入資訊;或者在使用者登入時,只在該系統儲存使用者登入資訊,當使用者在其他站點登入時,必須請求該系統介面,獲取使用者是否登入的資訊。前一種方式的缺點是:不管使用者有沒有使用其他站點,那些站點都需要儲存使用者狀態;後一種方式就把所有的壓力都轉移到登入系統上面來。而如果要實現使用者退出的統一操作,就需要站點呼叫登入系統的退出介面,然後登入系統介面呼叫其他站點的退出介面;或者設定乙個標記,如果這個標記不存在則標示使用者退出,此時只要把該標示清空即可,其他站點發現該標示不存在就知道使用者已經退出系統。

這種處理方式需要在登入系統和個站點之間規定登入介面,和登出介面。通過這些介面,個站點可以很方便的處理使用者登入或退出:

//先檢查使用者是否在登入系統中登入
function login()

//使用者沒有登入,則在本系統中登入並呼叫登入伺服器介面

function loging()  //本系統登入

上面只是簡單的邏輯結構,對於正式的系統需要做具體的處理。

單點登入系統簡單實現

最近要做單點登入系統,網上參考了一下,就是得整個授權服務,其他需要進行單點登入的應用的授權,登出都通過該授權服務來決定,然後就是一處登入,處處登入 一次登出,處處登出。簡單說明實現原理 2.譬如現有驗證應用a,需要進行單點登入的系統s1,s2。現在s1需要進行登入驗證,首先會考慮s1本身的身份驗證,...

單點登入系統SSO實現

前些天被問到單點登入了,而據我當時做的這個模組兩年了,現在重新溫習並記錄下,方便以後快速回憶起來 sso全稱single sign on。sso是使用者只需要登入一次就可以訪問所有相互信任的應用系統 分布式集群的專案因為每個模組都部署在不同的機器。如果第一次在a系統登入,第二次訪問b系統,這個時候b...

單點登入系統

單點登入 single sign on 簡稱為 sso,是目前比較流行的企業業務整合的解決方案之一。sso的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。也就是說,a.test.cn和b.test.cn兩個站點之間只需要登入一次即可。比如我在登入 之後,如果去天貓 那...