【问题标题】:How can I bypass drf Token Authentication when using firebase for authentication in django?在 django 中使用 firebase 进行身份验证时如何绕过 drf 令牌身份验证?
【发布时间】:2021-09-05 10:41:02
【问题描述】:

我需要使用我的 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) 

Settings.py

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

【问题讨论】:

    标签: django firebase pyrebase


    【解决方案1】:

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

    class Auth(APIView):
        permission_classes = []
    
        def post(self, request, format=None):
            ...
    

    【讨论】:

    • 这对我很有用,非常感谢。我需要将 firebase 上的用户连接到我的数据库上的用户。你能指出我正确的方向吗?
    • 哦,出于某种原因,我认为 pyrebase 就像一个成熟的 Django 身份验证后端,但显然情况并非如此。您可以执行以下操作:1) django_user, _ = User.objects.get_or_create(email=email, defaults=some_other_user_data_but_not_password)).2) 从该 API 返回令牌,以便客​​户端可以授权后续请求 (token, _ = Token.objects.get_or_create(user=django_user))。如果你也想复制它,你也可以.set_password,但我不确定这是不是最好的主意。
    猜你喜欢
    • 2017-06-05
    • 2018-08-23
    • 1970-01-01
    • 2019-08-31
    • 2019-06-28
    • 2017-04-11
    • 2021-01-10
    • 2016-09-27
    • 2019-03-05
    相关资源
    最近更新 更多