【问题标题】:Remove password from custom Django User model从自定义 Django 用户模型中删除密码
【发布时间】:2016-04-27 14:56:19
【问题描述】:

如何在自定义用户模型中删除users表和User类中的密码?

我正在使用 django-rest-framework 令牌认证,所以我不需要密码字段。

这是我的模型:

class CustomUserManager(BaseUserManager):

    def create_user(phone, name=None):
        return User.objects.create(
            name=name, phone=phone)

    def create_superuser(name, phone=None):
        pass

class User(AbstractBaseUser):
    """
    Custom django User model.
    """
    name = models.CharField(max_length=30,
                        null=True, validators=[validate_name])

    phone = PhoneNumberField(unique=True, blank=False, null=False)

    objects = CustomUserManager()

    USERNAME_FIELD = 'phone'
    REQUIRED_FIELDS = []

【问题讨论】:

  • 确定你根本不需要密码吗?比如说,拥有管理员权限???
  • 是的,我确定,我不想要管理员访问权限。
  • 我们可以在没有密码的情况下进行管理员访问吗?喜欢使用 OTP 或其他方式?

标签: python django django-models django-rest-framework django-users


【解决方案1】:

删除密码字段的替代方法是使用set_unusable_password,它将用户标记为未设置密码。

def create_user(phone, name=None):
    user = User(name=name, phone=phone)
    user.set_unusable_password()
    user.save()
    return user

【讨论】:

  • 这个,正如它在文档中所说的那样......“如果您的应用程序的身份验证是针对现有的外部源(例如 LDAP 目录)进行的,您可能需要这个。”
【解决方案2】:

只需覆盖密码属性:

password = None

【讨论】:

    猜你喜欢
    • 2021-06-29
    • 2022-12-12
    • 2020-11-12
    • 2021-12-08
    • 1970-01-01
    • 2016-02-13
    • 2019-08-01
    • 2013-06-20
    • 2014-10-26
    相关资源
    最近更新 更多