繼上一篇博文:可跨域的單點登錄(SSO)實現(xiàn)方案【附.net代碼】雖然實現(xiàn)了單點登錄,也存在很多不合理的地方。很多熱心的朋友也給出了很多指導性的意見,特別是 LoveCoder提出的意見。
在很多親自操刀過單點登錄的朋友看來,單點登錄很簡單啊,不過如此。但是還有很多如我一樣剛剛接觸過或者沒有接觸過單點登錄的朋友卻不清楚單點登錄具體該怎么做。雖然網(wǎng)上單點登錄的教程很多很多,大都是實現(xiàn)思路、實現(xiàn)原理,真正涉及到代碼級別的實現(xiàn)細節(jié)卻很少。
單點登錄產生的原因是為了解決多個子系統(tǒng)共享登錄狀態(tài)的問題,每個人的思想或者能力不同,實現(xiàn)方式可能都不盡相同。好比過河,各有各的招,有的人坐船過去,還有人拽著繩蹚水過去的,安全嗎?坐船船會漏,拽繩繩會斷,怎么辦?每個人身上再綁個救生圈,這樣安全了嗎?不見得。針對某個問題域我們每個人都想給出一個完美的解決方案,而現(xiàn)實往往是因為個人能力或者公司業(yè)務情況所限而做不到完美。我們只能做到首先要保證能解決存在的問題,然后針對使用情況做各種優(yōu)化,好的系統(tǒng)是用出來的而不是設計出來的。
在這一篇博文中,主要優(yōu)化的地方是:將輪詢跳轉寫cookie到各個分站改為使用ajax分發(fā)寫cookie到各個分站。
如有不正歡迎指教
改進方案
是在上一篇博文:可跨域的單點登錄(SSO)實現(xiàn)方案【附.net代碼】的基礎上進行的改進,如有疑惑請先查看上篇博文。
1.sso.com登錄驗證方法不再重定向,而是輸出一段js代碼進行ajax分發(fā)
后臺代碼如下: