Django用户模型,使用加密和哈希电子邮件作为用户名

时间:2019-05-11 14:10:47

标签: django django-authentication django-custom-user

我有一个使用电子邮件作为用户名的自定义用户模型。 我已加密电子邮件字段,使其与GPDR一致(我将保存很多个人信息)。 我添加了一个带有索引的email_hash字段,以便数据库能够立即检索用户。 我已经修改了用户对象管理器的get_natural_key以使用哈希进行检索。

但是现在我面临一个问题,我必须禁用字段电子邮件(用户名字段)的唯一性,但是当我尝试进行迁移时,Django不允许我这样做。

myuser.MyUser: (auth.E003) 'MyUser.email' must be unique because it is named as the 'USERNAME_FIELD'.

否则,我希望在电子邮件字段而不是在email_hash字段上触发唯一性错误...。

如何以用户身份使用功能已加密的电子邮件字段并为索引存储哈希?

编辑: 我在电子邮件字段上禁用了唯一性检查,并在设置中添加了SILENCED_SYSTEM_CHECKS = ["auth.E003"]

现在,我的问题是将email_hash的唯一性错误呈现为电子邮件错误,以使“具有该电子邮件地址的用户已存在”。消息显示在正确的表单和django rest框架序列化程序字段上。

0 个答案:

没有答案