散列密码成为真实密码

2024-10-04 11:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图在django admin中更改用户字段并保存它时,散列密码最终会变成真正的密码。你知道吗

因此,如果密码像pbkdf2adhfkhadqeqerqfavghhfyb那样散列,并且我在用户模型中更改了另一个字段,那么这个散列的密码就变成了我的非散列密码。你知道吗

我的代码是这样的。你知道吗

class UserCreationForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('Email','name','password','is_staff','is_superuser','Teacher',
                  'Student', 'Data_Joined', 'Is_active')

    def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.set_password(self.cleaned_data["password"])
        if commit:
            user.save()
        return user

class UserAdmin(admin.ModelAdmin):
    form = UserCreationForm

admin.site.register(User, UserAdmin)

Tags: django用户self密码adminissavepassword
1条回答
网友
1楼 · 发布于 2024-10-04 11:28:46

我认为发生这种情况是因为UserChangeForm默认值使用ReadOnlyPasswordHashField作为字段password。你知道吗

我会尝试:

class UserCreationForm(forms.ModelForm):

     password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ('Email','name','is_staff','is_superuser','Teacher',
              'Student', 'Data_Joined', 'Is_active')

    def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.set_password(self.cleaned_data["password1"])
        if commit:
            user.save()
    return user

相关问题 更多 >