2013-04-12 30 views
0

恐怕我自己無法解決這個問題。奇怪的是,這個問題對我的安裝似乎是獨一無二的。WordPress - 使用不同的瀏覽器/ IP時自動註銷

在我的基於WordPress的網站上,用戶在登錄時遇到了問題,特別是在使用手機進行身份驗證時:他們正在註銷(即使在檢查「記住我」時),將不得不重新輸入他們的憑據(之後他們再次登出)。從我的想法來看,很可能他們各自的移動互聯網服務提供商一直動態地爲他們的設備分配新的IP地址,導致認證失敗。

當我用我的桌面登錄時,一切都會正常工作。但是,比如說,我已經使用Google Chrome成功登錄到該網站,並且我打開了Mozilla Firefox(或任何其他瀏覽器)的實例同時登錄,Chrome的用戶「會話」將立即關閉(我知道這是因爲一個異步腳本正在請求用戶是否已登錄,並且在我使用其他瀏覽器登錄後提示我登錄)。因此,我相信整個WordPress驗證也與用戶代理有關。

儘管我非常感謝從不同IP或瀏覽器訪問網站時自動排除正在運行的會話所提供的額外安全性,但我的用戶卻沒有。即使對我自己來說,使用三臺不同的機器,平板電腦和手機從任何可能的地方訪問網站都是非常麻煩的(最終我不再煩惱登錄,只是等待回家)。

由於WordPress驗證使用cookie,我研究瞭如何生成這些。 wp_generate_auth_cookie()方法使用用戶名,其散列密碼的部分,到期時間和鹽(在wp-config.php中定義的常數鹽),但它們都不使用IP地址也不使用用戶代理。 我從字面上搜索整個WordPress文件夾中的「用戶代理」或「IP地址」事件,但沒有包含這些術語的登錄相關腳本(僅僅是少量不會影響用戶會話的插件)。

這使我感到困惑。 WordPress如何在不使用認證Cookie的情況下認識到我使用不同的瀏覽器/計算機登錄?檢查發生在哪裏,記錄我和我的用戶?

對於如何解決問題,您有任何進一步的想法嗎?

非常感謝您提前!

哈爾蒂

回答

1

Cookies是在同一臺機器上存儲的瀏覽器和不同的瀏覽器不共享存儲。因此,當您使用Chrome登錄時,WP會向Chrome發送一個登錄Cookie,開始新的會話。當您使用Firefox訪問站點時,FF沒有登錄cookie,因此WP會提示您登錄,然後向FF發送登錄cookie,同時啓動新會話。下次您通過Chrome訪問該網站時,系統會獲取Chrome的登錄Cookie,與您用戶名關聯的最後一個不匹配,因此所有事情都會重新開始。

這並不直接解釋移動設備的問題;這聽起來像是因爲某些原因,他們沒有正確存儲cookie。

+0

但是,我想知道爲什麼WordPress知道它已經在另一個瀏覽器中發送了一個新的cookie - 可能是由於新的到期時間。但是,在對cookie進行身份驗證時,我找不到與數據庫或任何其他內容的比較 - 數據可能存儲在何處? – Harti