不同域名的聯合登錄?

不同域名聯合登錄

 

需求:

我有幾個網站 如 www.a.com www.b.com  www.c.com 現在我想做到登錄任何其中一個網站其他兩個網站都不用登錄了!

 

環境: CI 框架

實現原理,如登錄www.a.com  驗證完 用戶名密碼正確後,1. 對www.a.com 設置session,cookie ; 2. 對 

 

細節&& 關鍵:

在a.com 登錄成功後,ajax 響應信息包括 如下:scriptStr

 

<script type="text/javascript" src="http://b.com/passport/login?union_code=85a85c848b60a8180b3476afb0954ae0b7cceed620fa1387818439180cf01b3b22d91d06ae8393dc90fffa465a4ebdb3b66c9167a2c7a31e9888e1e7e21564d52OfaImJ2Va56QTcZqiO%2Fz7QHBTsCJe18Y%2FoovwC2aGJYclznFtO4oA0Cj2m5AUbeCGhd4rxHv%2BE0uQKfRdPeKDp2oHt923RzGLE64CJdXxX1h%2F9S56v7bA"></script>

.......

在ajax的success function中可以 $('body').append(scriptStr);

 

說明 union_code 包含了用戶的一些基本信息 是加密過的,再passport/login 做了解密設置b.com cookie  及 session, 爲了安全 可以在信息中加入時間戳參數,如果超時不去設置 cookie session

 

$plain_text = json_encode($userInfo);    //userInfo : 包含admin_id;  admin_name;  role_id等

$enText = $this->encryption->encrypt($plain_text);

$scriptText .= '<script type="text/javascript" src="' . $val['url'] . $optPath . '?union_code=' . urlencode($enText) . '"></script>';

 

退出類似登錄  在a.com 點擊普通鏈接退出  響應信息如下:scriptStr

<script type="text/javascript" src="

http://www.b.com/passport/logout?union_code=76dd9ffcd5289b4d6c83e8ca003f92de8cb2539e8bf108fcec32c04b4cd53994c0930907667d231855424854a9d4d69510c9dd9e54917e558ff7464f53afXX6l%2FAdWnmcb3Umi%2B5wY2opmqx2MTSm0xCPNYQxetXxkZ%2Bma%2BR2kRolu3RYbhKZAkg69nMVSLgoem1LsNnHbzNSTLt6cyA2wRgikJuY4PltZCQLbW4MgYE12a

"</script>

....

還要注意的一點: 我們a.com;  b.com管理員;菜單,權重 是共用的一個數據庫。a.com; b.com不同業務使用不同的數據庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章