2017-07-25 65 views
2

我需要澄清一個基本概念(此處爲初學者)。使用/不使用www的跨網址的一致性用戶授權

在Django的web應用程序我維護,我注意到,如果通過去example.com登錄他們仍然在www.example.com註銷(然後可以繼續創建克隆帳戶)。

1)爲什麼會發生這種情況?

2)解決這個問題的標準做法是什麼?即,在wwwno-www之間提供一致的體驗。

如果答案和重定向一樣基本,我可以使用一些指針和一個說明性的例子 - 我使用nginx反向代理與gunicorn。

+0

我不認爲任何客戶端的東西會阻止用戶註冊賬戶的克隆,具有更多如何處理你的模型和視圖而不是cookies或者認證的東西 – arielnmz

+0

你還在做什麼來記錄用戶?您是使用內置視圖還是自定義登錄? – arielnmz

+0

在這個問題的背景下,克隆只是一個觀察 - 我們可以忽略它。 –

回答

1

1)Django餅乾在默認情況下與預先設置的www和非www域不一樣.Django認爲它是一個不同的會話。

2)PREPEND_WWW設置您可以設置爲將您的xyz.com重定向到www.xyz.com。

PREPEND_WWW = True 

,或者如果你需要相同的cookie到兩個站點,你可以使用session_cookie_domain

SESSION_COOKIE_DOMAIN = ".yoursite.com" 
+0

是的,django文檔說的是什麼,將其設置爲字符串,例如「.example.com」 (注意前面的點!)用於跨域cookie,或者將None用於標準域cookie。 – Aniket

+0

** 1)**標準做法是擁有'www'還是不擁有? ** 2)**一些資源指出,這種重定向應該發生在網絡服務器級別(在我的情況下爲nginx)。您定義的方法比這更好還是更差? –

+0

無論你使用www還是不使用www,但是當你決定其中一個時,你必須保持一致,因爲SEO的目的。 – Aniket