【发布时间】:2020-12-01 02:52:26
【问题描述】:
我正在实现自定义寄存器序列化程序。顺便说一句,密码在管理页面上是加密的,所以它与 pbkdf2_sha256 不同。像这样
!eWf3UsvTHU4dJ4F.....
我想使用 pbkdf2_sha256 的算法而不是这个来获取用户的密码。我该怎么办?这是我的代码。
class customRegisterSerializer (serializers.Serializer) :
email = serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
password = serializers.CharField(required=True, write_only=True)
user_Name = serializers.CharField(required=True)
profile = serializers.ImageField(use_url=True)
def validate_email(self, email):
email = get_adapter().clean_email(email)
if allauth_settings.UNIQUE_EMAIL:
if email and email_address_exists(email):
raise serializers.ValidationError(
_("A user is already registered with this e-mail address."))
return email
def validate_password (self, password: str) -> str:
return get_adapter().clean_password(password)
def get_cleaned_data(self):
return {
'email': self.validated_data.get('email', ''),
'password': self.validated_data.get('password', ''),
'userName': self.validated_data.get('userName', ''),
'profile' : self.validated_data.get('profile', ''),
}
def save(self, request):
adapter = get_adapter()
user = adapter.new_user(request)
self.cleaned_data = self.get_cleaned_data()
adapter.save_user(request, user, self)
setup_user_email(request, user, [])
return user
【问题讨论】:
-
user.set_password("plain text") 将使用默认算法 user.password = "yourencryptedtext" 将使用您的算法,
-
我不知道如何在该代码中使用 .set_password() 方法。
-
在保存方法中:在self.cleaned_data = self.get_cleaned_data()之后添加:
user.set_password(self.cleaned_data.get('password')) -
谢谢,但它不起作用..