django - 继承 AbstractUser 明文 问题处理

问题现象

继承了 AbstractUser  之后的扩展用户表, 会出现在使用 admin 时密码明文显示的问题

变成明文有两个麻烦, 第一是不安全, 这个姑且不说, 其次就是不能享受django自带的一系列的加密解密的过程了

即使说在这时候你创建的密码会直接明文保存在数据库, 因此造成的问题就是  admin 是没法登陆使用的

解决方式

解决方式有很多目前了解的适用性最高的有两种

方式一

自行写相关方法实现加密解密的过程, 可以直接找别人写好的或者自己写都可以

方式二

注册使用 django 自带的  UserAdmin 这样就可以实现自带的功能了

但是也存在问题, 这样单纯的通过继承实现, 在admin 操作的时候无法对我们扩展的字段进行展示

解决方式

from django.contrib.auth.admin import UserAdmin
from django.utils.translation import gettext, gettext_lazy as _

class MyAdmin(UserAdmin):
    # 重写fieldsets在admin后台加入自己新增的字段
    fieldsets = (
        (None, {‘fields‘: (‘username‘, ‘password‘)}),
        (_(‘personal info‘), {‘fields‘: (‘first_name‘, ‘last_name‘, ‘email‘)}),
        (_(‘permissions‘), {‘fields‘: (‘is_active‘, ‘is_staff‘, ‘is_superuser‘,
                                       ‘groups‘, ‘user_permissions‘)}),
        (_(‘important dates‘), {‘fields‘: (‘last_login‘, ‘date_joined‘)}),
        (_(‘nick_name‘), {‘fields‘: (‘nick_name‘,)}),
        (_(‘birday‘), {‘fields‘: (‘birday‘,)}),
        (_(‘gender‘), {‘fields‘: (‘gender‘,)}),
        (_(‘address‘), {‘fields‘: (‘address‘,)}),
        (_(‘mobile‘), {‘fields‘: (‘mobile‘,)}),
        (_(‘image‘), {‘fields‘: (‘image‘,)}),
        (_(‘home‘), {‘fields‘: (‘home‘,)}),
        (_(‘company_address‘), {‘fields‘: (‘company_address‘,)}),
        (_(‘company‘), {‘fields‘: (‘company‘,)}),
        (_(‘department‘), {‘fields‘: (‘department‘,)}),
        (_(‘credit_score‘), {‘fields‘: (‘credit_score‘,)}),
        (_(‘money‘), {‘fields‘: (‘money‘,)}),
        (_(‘is_driver‘), {‘fields‘: (‘is_driver‘,)}),
    )

admin.site.register(UserProfile, MyAdmin)

通过重写UserAdmin 的fieldsets 进行自定义的扩充既可

原文地址:https://www.cnblogs.com/shijieli/p/12205810.html

时间: 2024-10-08 11:56:29

django - 继承 AbstractUser 明文 问题处理的相关文章

django中自建app:user继承AbstractUser后报错:auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'UserProfile.groups'.

在django中当继承了AbstractUser from django.contrib.auth.models import AbstractUser class UserProfile(AbstractUser): pass 之后直接运行报错 SystemCheckError: System check identified some issues: ERRORS: auth.User.groups: (fields.E304) Reverse accessor for 'User.grou

Django - 继承原生user表遇到的问题处理

Django - 继承原生user表遇到的问题处理] 1. 继承user表设置 # models.py文件 from django.contrib.auth.models import AbstractUser class User(AbstractUser): mobile = models.CharField(max_length=11) class Meta: db_table = 'new_user' verbose_name = '用户' verbose_name_plural = v

django继承修改 User表导致的问题

扩展默认的auth_user表参考: http://www.cnblogs.com/liwenzhou/p/9030211.html#undefined django继承修改 User表时,python  manage.py  makemigrations进行python  manage.py  migrate操作时会导致的问题如图: 根源:django文档中有注明: Due to limitations of Django’s dynamic dependency feature for sw

Django用户继承AbstractUser后密码为明文

其实本不应该有这个问题,却花了我很久的时间,因为还是初学阶段. 造成这个原因是因为在admin注册的生活没有指定Admin 在app的admin.py里面 from django.contrib.auth.admin import UserAdmin admin.site.register(UserProfile, UserAdmin) 原文地址:https://www.cnblogs.com/zhaoyingjie/p/9559470.html

【Django】orm继承AbstractUser表

modles.py from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): ... 需要在settings.py中配置 AUTH_USER_MODEL = '应用名.UserInfo' 原文地址:https://www.cnblogs.com/q1ang/p/10049682.html

Django-models,继承AbstractUser类

1.UserInfo类继承了Django模型自带的User类,需要导入AbstractUser   2.然后在settings.py中配置

Django继承drf的user模型的demo

1.安装虚拟环境 #mkvirtualenv drfdemo -p python3 #pip install django #pip install djangorestframework #pip install pymysql 2.创建项目 django-admin startproject myuser 3.添加drf应用 在settings.py的INSTALLED_APPS中添加'rest_framework'. INSTALLED_APPS = [ ... 'rest_framewo

Django继承

Django目前支持两种不同的继承方式,包括抽象基础类和多表继承. 1.抽象基础类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class Author(models.Model):     name=models.CharField(max_length=20)      class Book(models.Model):     title=models.CharField(max_length=100)     num_pa

Django解决扩展用户表时,后台Admin显示密码为明文的问题

小生博客:http://xsboke.blog.51cto.com 如果有疑问,请点击此处,然后发表评论交流,作者会及时回复(也可以直接在当前文章评论). -------谢谢您的参考,如有疑问,欢迎交流 Django解决当扩展用户表时,用户继承AbstractUser后,后台Admin会显示密码为明文的问题 先看项目列表 1.今天在写一个扩展Django默认的用户表功能时,遇到了一个问题.先给大家看一下我写的,扩展用户表的models[apps.users.models],我是通过继承Abstr