从自定义Django用户模型中删除密码

13

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

我正在使用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 = []

2
你__确定__不需要密码吗?比如,获得管理员的root访问权限? - bruno desthuilliers
2
是的,我确定,我不想要管理员权限。 - Anas Aldrees
我们能否在没有密码的情况下获得管理员访问权限?比如使用OTP或其他什么方法? - Irfan wani
你能够移除它吗?在管理员中添加用户时,你是如何移除密码要求的?我在add_fieldsets中移除了密码,但是我收到了“请纠正以下错误。”的错误提示。 - mionnaise
2个回答

23

除了移除密码字段之外,另一种选择是使用set_unusable_password,它会将用户标记为未设置密码。

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

2
正如文档中所述,“如果您的应用程序的身份验证是针对现有的外部源(例如LDAP目录)进行的,则可能需要使用此功能。” - Sayse

8

只需覆盖密码属性:

password = None

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接