2017-07-25 99 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