php單點登入如何?

來源:互聯網
上載者:User

回複內容:

你給我私信裡說網域名稱不是簡單父子網域名稱的關係,所以直接的cookie共用是不可行的。提供一種比較好做的方案,假設你有三個不同網域名稱,a.com, b.com, http://c.com ,將其中之一作為真正的登陸入口,所有的網域名稱下發起的登陸,全部重新導向到這個節點,這裡假設選擇http://a.com/login.php 為統一登入節點,為了方便說明,把http://a.com 叫做主節點,其餘叫做從節點。

假設現在從任意網站發出登陸請求,最終都被帶到 http://a.com/login.php?from=b.com&sfkey=xxxxxx ,使用者輸入登陸資訊,假設登陸成功,返回一個登陸成功中間頁面,在這個頁面裡,包含下面html代碼
途牛最牛逼的首席架構師兼途牛董事會成員 @曹河圖的部落格
一個單點登入系統設計 如果你的要求不高 ucenter是一種解決方案說一個不同的答案吧——廣播機制。同樣,以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 請求驗證使用者身份時,則驗證失敗。沒有樓上那些說的那麼複雜。
一般兩種方案:
1 共用SESSION(db,nosql等)
2 通過介面對每個網域名稱下寫cookie(常見ucenter)。
至於那些在頁面上做處理,不現實的。一則涉及面廣,二則維護不方便,也不符合業務封裝(模組化)的架構思維。如果不考慮異地部署話,可以將使用者登入資訊統一存在服務端的共用儲存裡,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。不錯!最後的結果呢?占坑… 等自己部落格更新後來埋答案
  • 相關文章

    聯繫我們

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

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

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.