我知道有些人可能会说,如果我必须隐藏它,就不需要在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()
答案 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)