Django 自定义用户模型密码未经过哈希处理

2023-12-22

我有自己的自定义用户模型,也有自己的管理器。

models:

class MyUser(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(max_length=255, unique=True)
    first_name = models.CharField(max_length=35)
    last_name = models.CharField(max_length=35)
    username = models.CharField(max_length=70, unique=True)
    date_of_birth = models.DateField()
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)

    @property
    def is_staff(self):
        return self.is_admin

    def get_full_name(self):
        return ('%s %s') % (self.first_name, self.last_name)

    def get_short_name(self):
        return self.username

    objects = MyUserManager()
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'last_name', 'username', 'date_of_birth']

manager:

class MyUserManager(BaseUserManager):
    def create_user(self, email, first_name, last_name, username, date_of_birth, password=None, **kwargs):
        if not email:
            raise ValueError('User must have an email address')

        user = self.model(
            email=self.normalize_email(email),
            first_name=first_name,
            last_name=last_name,
            username=username,
            date_of_birth=date_of_birth,
            **kwargs
        )
        user.set_password(self.cleaned_data["password"])
        user.save(using=self._db)
        return user

    def create_superuser(self, email, first_name, last_name, username, date_of_birth, password, **kwargs):
        user = self.create_user(
            email,
            first_name=first_name,
            last_name=last_name,
            username=username,
            date_of_birth=date_of_birth,
            password=password,
            is_superuser=True,
            **kwargs
        )
        user.is_admin = True
        user.save(using=self._db)
        return user

创建新用户时一切正常,没有任何错误。但是当我尝试登录时却无法登录。所以我检查了用户的密码进行确认,密码显示为纯文本strongpassword,并且当更改管理表单以获取散列密码时,使用ReadOnlyPasswordHashField即使我使用了密码字段,我也收到错误set_password()对于里面的经理create_user()功能。

密码格式无效或未知的哈希算法

但是,如果我手动执行set_password('strongpassword')然后对该用户进行哈希处理。你能帮我解决这个问题吗?谢谢。


您创建用户的方式似乎没有使用您经理的create_user方法,例如通过 Django admin。

如果您创建自定义用户,则需要定义正确处理密码的自定义模型表单和模型管理员。

否则,当通过 Django 管理员创建用户时,密码将不会被散列。

The 文档中的示例 https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#a-full-example用于创建自定义用户的演示如何创建模型表单和模型管理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 自定义用户模型密码未经过哈希处理 的相关文章

随机推荐

  • 将文件中的图像读/写到 BufferedImage 的最快方法?

    在 Java Grails 中将文件中的图像读入 BufferedImage 的最快方法是什么 在 Java Grails 中将 BufferedImage 中的图像写入文件的最快方法是什么 我的变体 阅读 byte imageByteAr
  • 使用或不使用 NI Vision 从二进制缓冲区/文件创建 LabVIEW IMAQ 图像

    假设您有一个表示二维图像的二进制缓冲区或文件 如何使用 LabVIEW 将二进制数据转换为 IMAQ 图像以便进一步处理 借助 NI 视觉 对于 LabVIEW 用户已安装 NI 视觉库的人 有一些 VI 允许从 2D 数组复制 IMAQ
  • execv() 和 fork() 浪费时间

    我目前正在学习fork and execv 我对组合的效率有疑问 我看到了以下标准代码 pid fork if pid lt 0 handle fork error else if pid 0 execv son prog argv son
  • System.WeakReference 的实际使用

    我明白什么系统 弱引用 http msdn microsoft com en us library ms404247 aspx确实如此 但我似乎无法理解它可能有用的实际例子 在我看来 这个课程本身就是一个黑客 在我看来 还有其他更好的方法来
  • Eclipse,在库中定义的开放声明

    在 Eclipse 中 如果我按 F3 或打开某个库中的引用的声明 它会打开代码的只读副本 我一开始认为这非常有用 因为它提醒我它的库代码和更改可能会影响更多项目 但我发现如果我确实想编辑 则必须手动查找 java 文件 这很痛苦 我可以
  • 是否可以在 apache flink CEP 中处理多个流?

    我的问题是 如果我们有两个原始事件流 即Smoke and 温度我们想知道是否有复杂的事件 即Fire通过将运算符应用于原始流已经发生了 我们可以在 Flink 中做到这一点吗 我问这个问题是因为到目前为止我所看到的 Flink CEP 的
  • 当行有子项时复制数据库中的行

    我需要复制表中的行 并复制通过其外键链接到其他表中的所有行 然后复制链接到这些行的所有行 问题是当我复制该行时 密钥将会改变 如何通过表之间的关系传播这些更改 您可以编写一个实现所有复制逻辑的存储过程 本质上 在主表中插入复制行 将新 ID
  • System.IO.DriveInfo 返回错误的磁盘空间值

    更新 这个问题不会出现在我测试过的 Android 设备上 它返回良好的值 非常感谢有关此事的任何指示 我无法从 Mac 台式计算机获取正确的可用空闲空间值 我正在使用 Unity3D C 并使用以下代码 DriveInfo drives
  • 如何为续集更新添加日志记录

    在我的项目中sequelize日志记录已禁用 但我希望在确切的查询中进行主动日志记录 我怎样才能做到这一点 TableModel update counter 0 where id itm i then res gt console log
  • 我可以在同一页面上使用多个版本的 jQuery 吗?

    我正在从事的一个项目需要在客户的网页上使用 jQuery 客户将插入我们将提供的一段代码 其中包括一些
  • 无法在 Meteor 中解码下载的字体

    这是我的CSS font face font family geometria lightlight src url Geometria Light webfont eot src url Geometria Light webfont e
  • PyQt 与 Sqlalchemy 集成

    我正在尝试通过 Sqlalchemy 将使用 PyQt 创建的表单添加到数据库中 但我猜我的代码有问题 我收到此错误 le Users tunji Desktop employee py line 57 in AddEmployee ses
  • java中简单的“检查更新”库

    我正在使用 Eclipse RCP 但是 主要是因为我完全控制了 UI 删除了所有贡献 从头开始进行首选项等 我只是无法接受所包含的更新管理器的复杂性和需求 另外 我不使用插件功能 并且应用程序插件必须被提取 尽管我可以解决最后一个问题 不
  • 如何在 Laravel REST API 中使用 PUT 方法更新图像?

    我正在尝试使用 Laravel 构建一个 REST API 用户需要在其中更新他们的图像 但是 如果我在邮递员中使用 PUT 方法 它不会更新图像或将图像存储在指定文件夹中 如果我使用 POST 它会更新图像并保存在文件夹中 但它不会将文件
  • 更改日期格式化程序的区域设置

    我在我的应用程序中使用日期格式化程序来显示一些日期 但我希望该日期以阿拉伯语显示 所以我尝试更改格式化程序的区域设置 如下所示 var now new DateTime now var formatter DateFormat yMMMd
  • 如何使用 Asp.Net Core 实现基于权限的访问控制

    我正在尝试使用 aspnet core 实现基于权限的访问控制 为了动态管理用户角色和权限 create product delete product 等 它们存储在数据库中 数据模型就像https i stack imgur com CH
  • 如何加载外部文件并确保它首先在 JSFiddle 中运行?

    我有一个 JsFiddlehere http jsfiddle net deeptechtons rEzW5 2 并添加了通过外部 JS 资源部分加载的 Microsoft AJAX 如何判断 AJAX 文件加载完成后我的 JS 代码是否运
  • 单页应用程序 SEO 和无限滚动 AngularJS

    我们有一个网站 其提要类似于 pinterest 并计划将 jquery soup 重构为更结构化的内容 最有可能的两个候选者是 AngularJS 和 Backbone Marionette 该网站是用户生成的 主要以消费为导向 典型的
  • Symfony 表单字段属性empty_data 被忽略

    根据Symfony 2 4 文档 http symfony com doc current reference forms types text html empty data 任何不需要但提交时没有任何值的表单字段 选择字段的默认值或文本
  • Django 自定义用户模型密码未经过哈希处理

    我有自己的自定义用户模型 也有自己的管理器 models class MyUser AbstractBaseUser PermissionsMixin email models EmailField max length 255 uniqu