2016-02-26 138 views
1

比方說我有一個網站LoginSite和其他兩個站點站點1SITE2。現在跨域登錄

,如果在用戶登錄時從LoginSite,那麼他/她應該是自動登錄到SITE1SITE2


我已經試過以下兩種方式相同

WAY1 ::使用AJAX

我白名單LoginSite的域成site1site2

但是,它只啓用了跨域的Ajax請求。它不存儲會話site1 and site2

Way2 ::使用捲曲

我試着用捲曲的一套下面的代碼相同。

$username="[email protected]"; 
$password="mypassword"; 
$url="http://site1.com/api/login"; 
$cookie="cookie.txt"; 

$postdata = "[email protected]&password=mypassword"; 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 

echo $result; 
curl_close($ch); 

以上代碼無法正常工作。一定有一些缺失。我想不知何故我必須從site1返回sessionID並使用它。

Pl。幫助/指導我如何做到這一點。

注:我不想張貼形式site1的站點2

+1

「以上代碼無法正常工作。一定有一些缺失。我猜想我必須從site1返回sessionID並使用它。「 - 這是不可能的,'site2'不能告訴瀏覽器爲'site1'設置一個cookie。這將是一個嚴重的安全問題。 – Quentin

+0

好吧... so你有任何其他的替代方案或建議嗎?謝謝你清除我的頭腦我也對這個跨域cookie的事情懷疑 –

+0

如果我有時間來填補我的知識空白,並寫一個答案,我 – Quentin

回答

2

LoginSite必須產生一個的UniqueID,並給它回連接用戶 ,它將用作代幣
用戶連接到SITE2它會發出自己的令牌,並SITE2會詢問他的有效期內,如果它仍然有效,所以它將接受連接,並creting會話

結論:想想令牌,有效性和安全:)

+0

是的,我目前正在嘗試這種替代方法。但是在某處我讀了它是可能的使用cURL和AJAX實現所需的功能 我試圖在AES中以AES加密格式發送用戶名和密碼,我將在新選項卡中打開該文件。 Pl。如果您認爲它很脆弱,請提供您的建議。 BTW非常感謝。如果運作良好,我會接受答案。 –