Django管理界面未对用户密码进行哈希处理

5

我正在使用AbstractBaseUserUserCreationForm来开发我的Django应用。通过我的应用程序注册用户时,密码会以哈希格式保存并存储在数据库中。但是,当我尝试使用Django管理员网站进行相同的操作时,密码以原始格式保存。

2个回答

21

您需要确保您的模型管理类知道如何哈希密码。根据文档,如果您正在使用子类化AbstractBaseUser,则可能可以扩展UserAdmin

假设您的自定义用户模型称为CustomUser,您可以尝试以下操作。

from django.contrib.auth.admin import UserAdmin

class CustomUserAdmin(UserAdmin):
    ...

admin.site.register(CustomUser, CustomUserAdmin)

4
我猜问题在于你在admin.py中继承了ModelAdmin而不是UserAdmin,后者来自django.contrib.auth.admin。
示例代码:
from django.contrib.auth.admin import UserAdmin
from .models import Employee

class EmployeeAdmin(UserAdmin):
    pass

admin.site.register(Employee, EmployeeAdmin)

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