相关疑难解决方法(0)

在Django中接受电子邮件地址作为用户名

有没有一个很好的方法在django中执行此操作而不必滚动我自己的身份验证系统?我希望用户名是用户的电子邮件地址,而不是他们创建用户名.

请指教,谢谢.

python authentication django

83
推荐指数
5
解决办法
4万
查看次数

在django中使用电子邮件而不是登录名

首先,这不是如何对电子邮件/密码对进行身份验证的问题,而是如何生成逻辑,如果您愿意,还可以生成漂亮的数据结构.

我想在给定的django项目中使用电子邮件作为用户名.但是,我无法重新使用auth.User模型提供的字段,原因至少有两个:

  1. auth.User.username的字段max_length是30个字符,对于某些电子邮件地址可能不够.

  2. auth.User.email不是唯一的 - 显然不能满足前提条件,即用户名必须是唯一的.

因此,一个显而易见的方法是将用户名存储在自定义配置文件中,该配置文件链接到auth.User.在这种情况下,我们必须处理以下问题:

  1. 为auth.User.username生成唯一的用户名 - 电子邮件的md5哈希应该没问题吗?
  2. 完全遗漏auth.User.email为空 - 因为它只有75个字符长,而根据RFC 5321(有效电子邮件地址的最大长度是多少?),电子邮件可以长达256个字符.

以下问题源于提出的解决方案:

  1. 一个是无法为密码重置等标准操作重用内置视图/模板
  2. 如果电子邮件更改,则必须更新auth.User.username

为了增加石油,django开发人员不太可能在任何可预见的未来修复此限制 - 请参阅http://code.djangoproject.com/ticket/11365

所以问题是:有没有其他方法可以做到这一点你是否看到上面提出的解决方案有任何其他缺点?

谢谢!

database architecture django data-structures

7
推荐指数
2
解决办法
1004
查看次数