【问题标题】:Consistent user authorization across url with/without www具有/不具有 www 的 url 上的一致用户授权
【发布时间】:2017-12-31 20:48:43
【问题描述】:

我需要澄清一个基本概念(这里是初学者)。

在我维护的一个 Django Web 应用程序中,我注意到如果有人通过 example.com 登录,他们仍然在 www.example.com 上注销(然后可以继续创建克隆帐户)。

1) 为什么会这样?

2) 解决此问题的标准做法是什么?即,在 www 和 no-www 之间提供一致的体验。

如果答案与重定向一样基本,我也可以在那里使用一些指针和一个说明性示例 - 我正在使用带有 gunicorn 的 nginx 反向代理。

【问题讨论】:

  • 我不认为任何客户端的东西会阻止用户注册克隆帐户,这更多地与您的模型和视图有关,而不是 cookie 或身份验证的东西
  • 另外你在做什么来登录用户?您使用的是内置视图还是自定义登录?
  • 在这个问题的上下文中,克隆只是一个观察 - 我们可以忽略它。
  • 我依赖django.contrib.auth(即来自 Django 框架的内置内容)。
  • 除非您以某种方式依赖 cookie 的内容来设置新用户的用户名,否则用户没有理由创建克隆帐户

标签: django web no-www www-authenticate


【解决方案1】:

1 ) 默认情况下,Django cookie 不适用于预先添加 www 和非 www 域。Django 将其视为不同的会话。

2) 您可以设置 PREPEND_WWW 设置以将您的 xyz.com 重定向到 www.xyz.com。

PREPEND_WWW = True 

或者,如果您需要两个网站使用相同的 cookie,您可以使用 session_cookie_domain,

SESSION_COOKIE_DOMAIN = ".yoursite.com"

【讨论】:

  • 是的,正如 django 文档所说,对于跨域 cookie,将其设置为诸如“.example.com”(注意前导点!)之类的字符串,或者将 None 用于标准域 cookie。
  • 1) 拥有www 或不拥有它是标准做法吗? 2) 一些资源指出这种重定向应该发生在网络服务器级别(在我的例子中是 nginx)。您定义的方法是否比这更好/更差?
  • 无论您使用什么 www 或不使用 www 都没有关系,但是当您决定其中之一时,由于 SEO 的目的,您必须保持一致。
  • 但很多大型直播项目使用 www 来附加,例如 instagram 和 facebook
  • 感谢您的信息。最后,您认为最好的改变方式是什么,并且对现有用户的干扰最少?
猜你喜欢
  • 2022-01-09
  • 2021-10-08
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 2015-12-21
  • 2020-05-12
相关资源
最近更新 更多