php單點登入如何實現

時間 2021-06-01 19:48:01

1樓:快樂的女程式設計師

設計單點登入系統時,註冊是怎麼處理的?由單點登入系統對外提供註冊介面?還是各個子系統分別對外提供註冊介面? @黃輝馮, @罒罓罒

2樓:王大爺

沒有樓上那些說的那麼複雜。

一般兩種方案:

1 共享SESSION(db,nosql等)2 通過介面對每個網域名稱下寫cookie(常見ucenter)。

至於那些在頁面上做處理,不現實的。一則涉及面廣,二則維護不方便,也不符合業務封裝(模組化)的架構思維。

3樓:王一鳴

說乙個不同的答案吧——廣播機制。同樣,以http://a.com

作為主網域名稱,不論http://

b.com

還是http://

c.com

登入時請求都提交到http://

a.com

,所有的儲存都在http://

a.com

,其他網域名稱不允許訪問。在http://

a.com

登入成功後,將登入資訊存放在http://a.com

域下的cookie中。此時發起廣播,由client端通知http://

b.com

和http://

c.com

,說使用者已經登入(僅僅是告訴他們已經登入),此時使用者訪問http://

b.com

或者http://

c.com

時有server端向http://

a.com

請求獲取使用者資訊,並將非敏感資訊儲存到自己的儲存當中。同理,登出時也是向http://

a.com

發起登出請求,http://

a.com

將使用者cookie清掉,http://

b.com

和http://

c.com

再次向http://

a.com

請求驗證使用者身份時,則驗證失敗。

4樓:

如果不考慮異地部署話,可以將使用者登入資訊統一存在服務端的共享儲存裡,memcache或者redis都是可以的;當使用者由http://

a.com

跳轉到http://

b.com

之前在url中生成乙個加密串,加密串中存放相應的登入資訊key及校驗資訊。使用者跳轉到http://

b.com

後解密url中的引數並去共享儲存中獲取使用者登入資訊。當然,如果需要相對安全一些,可以對使用者在http://

a.com

時的sid、ip之類的資訊進行驗證,同時控制url中登入引數的生命週期。驗證通過後再在http://

b.com

的伺服器上寫入本地登入資訊。退出的時候登出掉共享儲存中的登入資訊即可。

上述url中的登入引數作用類似於cas這類sso解決方案中的ticket。

php 如何實現待辦記事列表

奧古斯巨集 在我這個邏輯中,都沒用到定時任務.進入頁面的時候執行相關邏輯就可以.不過你的最好是使用定時任務,你擔心的是每天執行一遍,每天都會查詢大量的資料 或者說會查出大量的資料,感覺沒必要 這裡有兩個資料量問題,第乙個是儲存的資料量,第二個是查詢的資料量.儲存的資料量沒法優化,但是第二個查詢的資料...

PHP 登入嘗試次數設計的原理是什麼?

笑盡往事 我想到兩種方案 1.把使用者發簡訊的記錄寫入redis的key v然後判斷,再設定乙個失效時間是15分鐘 2.把使用者簡訊記錄寫入資料庫,然後運算元據庫 小小魯 1,不要使用session,可以使用cache 和資料庫 2,要實現max retry 將記錄錯誤次數和限制登陸分離會相對簡單點...

php如何實現通過ip獲取地理位置?

柳易寒 phpheader Content type text html charset UTF 8 function getIP function phpUnescape escstr 0 9a zA Z.escstr,matches prt matches ar matches 0 c fore...