码迷,mamicode.com
首页 > 其他好文 > 详细

django - 继承 AbstractUser 明文 问题处理

时间:2020-01-17 15:05:21      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:rtm   过程   gis   tran   str   ddr   superuser   bst   profile   

问题现象

继承了 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 进行自定义的扩充既可

django - 继承 AbstractUser 明文 问题处理

标签:rtm   过程   gis   tran   str   ddr   superuser   bst   profile   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!