如何在API响应中隐藏密码?

时间:2018-03-24 05:24:28

标签: python django django-models password-protection

我知道有些人可能会说,如果我必须隐藏它,就不需要在api-response中提供密码。但关键是,即使我去管理部分,我也可以看到密码哈希值,这就是我这样做的原因。

所以我的问题是,如何在API响应中隐藏该密码。对于前者用星号。

注意:我的数据有自定义模型。 我只需要一个功能以及在哪里投入使用。

models.py

from django.db import models
from django.contrib.auth.hashers import make_password


class MyUser(models.Model):
    full_name = models.CharField(max_length=128)
    profile_picture = models.ImageField(upload_to="user_data/profile_picture", blank=True)
    username = models.CharField(max_length=128, unique=True)
    birth_date = models.DateField(blank=True)
    gender = models.CharField(max_length=10, blank=True)
    password = models.CharField(max_length=255)
    contact = models.CharField(max_length=15, blank=True)
    email = models.CharField(max_length=100, unique=True)
    time_stamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.username

    def save(self, *args, **kwargs):
        if not self.pk:
            self.password = make_password(self.password)
        super(MyUser, self).save()

2 个答案:

答案 0 :(得分:1)

您可以提供任意数量的星号,或提供哈希密码(pandas)。但是,您无法知道用户的密码是什么,或者密码中包含多少字符,因此无法提供某些密码作为************(相同数量的字符)。

如果您认为需要提供某些内容,我建议您只选择任意数量的星号。

顺便说一句,我强烈建议你看看the documentation for extending the Django User model,而不是全力以赴。

答案 1 :(得分:0)

最好从django.contrib.auth.models覆盖 BaseUserManager,AbstractBaseUser 以使用您的自定义模型。因此,它将作为默认的用户模型(内置模型),它将完成所有操作。 Follow this link to the guide(Code)Follow this link for step by step brief guide(video tutorial)