【问题标题】:Migrating to Django rest framework迁移到 Django REST 框架
【发布时间】:2019-06-14 06:59:12
【问题描述】:

目前,我正在使用 node 作为后端,并期待将我的项目转移到 django-rest-framework。在节点中,我使用了 firebase-auth 和 MySQL,并有一个名为 FIREBASE_USERS 的表,其中包含 emailfirebase_uid 字段。我正在考虑为 drf 构建自己的自定义身份验证,但无法弄清楚使用我的 FIREBASE_USERS 表而不是 django Users 模型。我读到 django 提供了设置。 AUTH_USER_MODEL 设置您自己的自定义模型,但文档使用 AbstractUser 类来创建它,我不想弄乱我的表,因为这些表也用于其他项目。任何建议将不胜感激。

【问题讨论】:

    标签: python django django-rest-framework firebase-authentication


    【解决方案1】:

    您的自定义用户模型需要包含 (1) 中所述的属性。 AbstractBaseUser 是实现此目的的捷径。覆盖 Meta.db_table 以匹配您的表名。如果这还不够,请考虑按照 (2) 中的描述创建您自己的身份验证后端,并使用您的 firebase 用户的外键创建一个 django 用户。但是为了让 django 正常运行,您的用户模型需要具有 (1) 中描述的方法。

    也许 (3) 可以解决您的问题?

    (1)https://docs.djangoproject.com/en/2.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser

    (2)https://docs.djangoproject.com/en/2.2/topics/auth/customizing/#writing-an-authentication-backend

    (3)https://github.com/fcornelius/django-firebase-auth

    【讨论】:

    • 您好,感谢您的快速回复。我最终使用 DRF 提供的 BaseAuthentication 类创建了自己的自定义身份验证类。但是它给出了以下错误“FirebaseUser”(这是我的自定义用户模型的名称)对象没有属性“is_authenticated”,我检查了 django 文档,它说 is_authenticated 是用户对象上的一个字段,对于一个始终为 True用户,但我的自定义模型中没有该字段。有什么建议吗?
    • 通过覆盖 DRF 中的 BasePermission 类使其工作,感谢您的帮助。
    猜你喜欢
    • 2012-12-03
    • 2015-12-19
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2017-12-25
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多