Django - 使用电子邮件域并且没有密码的auth用户

1 security authentication django

我要求更改标准的Django电子邮件和密码登录,以允许任何用户无需密码登录,但仅限于他们在某个域上...例如somebody@example.com ...允许用户进入由于他们在正确的域名.

有什么建议?

Ste*_*lim 5

假设"在正确的域上"意味着他们拥有相关域的电子邮件地址,您可以编写一个自定义身份验证后端,

  • 外观检查,有一个单一的与电子邮件地址的用户(不超过一个,这也将意味着更新注册流程,以确保电子邮件地址唯一保证,再加上可能是检查你的重复数据块是否已经,以防万一)
  • 获取该用户并拆分其电子邮件地址的域以根据列表/允许的无密码所需域名进行检查
  • 将用户从您的自定义身份验证后端返回,就好像已经满足正常的密码检查一样,即使从未使用check_password()检查过.Django文档和各种djangosnippets.org片段显示了如何执行此操作.

此外:

  • 您将不得不为管理员登录视图使用新的/重写的身份验证表单类,该类不需要密码字段(但仍然显示非特殊登录),因此如果没有输入密码,它不会抱怨.

最后:

  • 得到宗教,如果你还没有
  • 向你的G/god祈祷,没有其他人知道允许使用电子邮件地址进行无密码认证的网站,特别是他们也没有得到有问题的电子邮件地址,特别是如果您的网站包含有关第三方的任何个人数据或必须符合PCI-DSS等,等等.
  • 因为上面的原因,强烈考虑对您的客户/用户/经理/请求此人的人说"不".使用密码是有原因的.

或者,最后,最后:

  • 跳过以上所有内容并告诉您的客户/用户/经理一些有关各种密码存储工具的信息 - 例如这个这个

  • +1给客户说**不!**除非这件事完全在公司的防火墙内部,或者您并不关心访问方法是否发布在133thaxors.org上,否则它需要正确管理帐户和密码. (2认同)