關於單點登陸的一些解決方案

來源:互聯網
上載者:User
解決  

最近CSDN中很多朋友都在討論關於多系統單點登陸的問題。現在總結自己使用過的方式看看能否給朋友們增加一些思路。

在處理問題前先討論下關於所謂的“多系統”的情況,按道理來說多系統會出現以下若干個情況:

1。使用的技術不一樣,應用的平台不一樣:如使用JSP和ASP。NET開發的,他們的應用平台都會不一樣

2。所在的物理伺服器不一致。未部署在同個伺服器叢集中。

3。使用的許可權驗證方式不一樣,比如說有的使用SESSION,COOKIE,還有的使用STATE服務。

而“單點登入”要實現的目的是,在任何一個系統中登入都能對所有系統暢通無阻的訪問。而要實現單點登陸的目的從大的方式來說可以分成3個方法:

1。登入時自動產生在所有系統的驗證標誌
本方法需要在各個子系統的登入頁面放置於架構頁面中,在架構的其他頁面中隱藏其他子系統的登入頁面,當點擊“登陸”時觸發JS事件把當前的使用者名稱/密碼提交到其他子系統的登陸頁面中,並且一同提交。這樣一次登入,其他所有系統也就登入了。
效率:這個方法幾乎可以不要修改過多的代碼,而且可以使用於所有的多系統情況,可以跨平台,跨伺服器
缺點:登入完後,如果沒有在各個子系統切換,那使用SESSION的子系統可能會發生登入逾時現象。不過這個解決方案也簡單,只需要在其他自系統的包含檔案(如copyRight)中用IFRAME的方式包含其他子系統的更新線上狀態的頁面,這樣就可以持續保持狀態。

2。登入時只產生本系統的驗證標誌,在轉入其他系統中時,從httpContext中通過驗證的標誌中轉化出當前系統需要的驗證,當然這個必須在所有系統在同個WEB伺服器,並且使用同種技術的前提下。

3。使用資料庫來記錄當前的線上資訊,登入後就往資料庫增加線上資訊,並且存入用戶端的能夠體現其唯一性的資訊(IP+機器名等)。
當某個系統要擷取目前使用者是否登入的資訊時先判斷該子系統的登入資訊是否存在,如果不存在,則再判斷狀態資料庫中是否存在當前用戶端的線上資訊。
效率:這個方法效率是比較高的,可以使用於所有的多系統情況,可以跨平台,跨伺服器。
缺點:要深入修改各個程式的代碼

先寫這麼多,再補充。



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。