gpt4 book ai didi

python - 在电子邮件上制作 Django 的身份验证跟踪,如何将用户名字段与电子邮件相关联?

转载 作者:太空狗 更新时间:2023-10-30 03:07:44 26 4
gpt4 key购买 nike

虽然我最初是在创建帐户时简单地将电子邮件地址放入用户名和电子邮件字段,但这不起作用,因为 Django 将用户名字段限制为 30 个字符,这可能不足以用于电子邮件地址。

我的第二个想法是对电子邮件地址进行 md5,将散列放入用户名中,这将使它始终是唯一的(从技术上讲,也与电子邮件字段相同)。 md5 是 32 个字符,同样我只有 30 个字符可以使用。

我的第三个想法是将 md5 哈希末尾的最后两个字符切掉,使其成为 30,然后按照我计划将其与完整哈希一起使用的方式使用它。但我不知道最终得到两个直到第 30 个字符相同并且仅在 31 和 32 处不同的哈希值的可能性有多大,我已经将它们砍掉了。

是否有更好的方法将用户名字段的内容与电子邮件地址相关联,使其始终唯一?

最佳答案

我们开发了一个 django 应用程序,它将电子邮件存储为用户名。 Django 内置的用户名模型被限制在 30 个字符以内,这对 90% 的用户来说是好的。

为了在不改变 django 源代码的情况下支持更长的用户名,我们使用了一个名为 longer_username 的小型附加应用程序:

from django.db.models.signals import class_prepared

def longer_username(sender, *args, **kwargs):
# You can't just do `if sender == django.contrib.auth.models.User`
# because you would have to import the model
# You have to test using __name__ and __module__
if sender.__name__ == "User" and sender.__module__ == \
"django.contrib.auth.models":
sender._meta.get_field("username").max_length = 75

class_prepared.connect(longer_username)

我们将其作为第一个应用程序添加到 INSTALLED_APPS 中:

INSTALLED_APPS = (
'longer_username',
...
)

就是这样。可以在此处找到更多信息:

关于python - 在电子邮件上制作 Django 的身份验证跟踪,如何将用户名字段与电子邮件相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3385944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com