在 Django 中使用 firebase 进行身份验证时,如何绕过 drf 令牌身份验证?

问题描述

我需要使用来自我的 django 应用程序的 firebase 登录用户。我已经完成了我认为我需要做的事情,但我似乎遗漏了一些东西。我正在使用 pyrebase 库。我在 firebase 上创建了一个用户,并且现在我需要让他们登录。 我在 Postman 上发布电子邮件和密码,我得到了“idToken”和“refreshToken”,这意味着用户在 firebase 上获得了身份验证。但这仅在我使用 drf 令牌身份验证(DEFAULT AUTH CLASSES)和授权令牌时才有效以前在 django admin 上创建的用户。我缺少什么以便我可以在没有 drf 令牌身份验证的情况下对用户进行身份验证?

views.py

config = {
  "apiKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxx","authDomain": "xxxxx.firebaseapp.com","databaseURL": "https://xxxxxxxxx-default-rtdb.firebaseio.com","storageBucket": "xxxxxxxxx.appspot.com",}

firebase = pyrebase.initialize_app(config)

auth = firebase.auth() 

class Auth(APIView):
   
    def post(self,request,format=None):
        email = "xxxx@gmail.com"
        password = "xxxx"
    
        user = auth.sign_in_with_email_and_password(email,password)

        return Response(user) 

设置.py

REST_FRAMEWORK = {
    "DEFAULT_AUTHENTICATION_CLASSES": (
        "rest_framework.authentication.TokenAuthentication",),"DEFAULT_PERMISSION_CLASSES": ("rest_framework.permissions.IsAuthenticated",}

解决方法

是的,基本上,您不需要在任何身份验证视图中进行任何授权。由于您的全局默认值为 IsAuthenticated,因此您需要覆盖视图中的 permission_classes

class Auth(APIView):
    permission_classes = []

    def post(self,request,format=None):
        ...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...