在 django 中使用 firebase 进行身份验证时如何绕过 drf 令牌身份验证?
How can I bypass drf Token Authentication when using firebase for authentication in django?
我需要使用我的 django 中的 firebase 登录用户 app.I 已经完成了我认为我需要做的事情,但我似乎遗漏了 something.I 我正在使用 pyrebase library.I 在 firebase 上创建了一个用户,现在我需要让他们登录。
我在 Postman 上发布了电子邮件和密码,我得到了 'idToken' 和 'refreshToken',这意味着用户在 firebase.But 上获得了身份验证这仅在我使用 drf 令牌身份验证时有效(DEFAULT AUTH 类) 和先前在 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)
Settings.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):
...
我需要使用我的 django 中的 firebase 登录用户 app.I 已经完成了我认为我需要做的事情,但我似乎遗漏了 something.I 我正在使用 pyrebase library.I 在 firebase 上创建了一个用户,现在我需要让他们登录。 我在 Postman 上发布了电子邮件和密码,我得到了 'idToken' 和 'refreshToken',这意味着用户在 firebase.But 上获得了身份验证这仅在我使用 drf 令牌身份验证时有效(DEFAULT AUTH 类) 和先前在 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)
Settings.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):
...