From cb8dc6c583257623dfbf133fe74ca1c7e85e2330 Mon Sep 17 00:00:00 2001 From: halo Date: Tue, 13 Dec 2022 21:57:17 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96oauth2=E7=9A=84?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=9C=B0=E5=9D=80=E5=8F=82=E6=95=B0=E6=8B=BC?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/backends/oauth2/backends.py | 16 ++++++++++++---- apps/authentication/backends/oauth2/views.py | 7 ++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/apps/authentication/backends/oauth2/backends.py b/apps/authentication/backends/oauth2/backends.py index 6469f121b..dfd140dae 100644 --- a/apps/authentication/backends/oauth2/backends.py +++ b/apps/authentication/backends/oauth2/backends.py @@ -90,8 +90,12 @@ class OAuth2Backend(JMSModelBackend): request, path=reverse(settings.AUTH_OAUTH2_AUTH_LOGIN_CALLBACK_URL_NAME) ) } - access_token_url = '{url}?{query}'.format( - url=settings.AUTH_OAUTH2_ACCESS_TOKEN_ENDPOINT, query=urlencode(query_dict) + if '?' in settings.AUTH_OAUTH2_ACCESS_TOKEN_ENDPOINT: + separator = '&' + else: + separator = '?' + access_token_url = '{url}{separator}{query}'.format( + url=settings.AUTH_OAUTH2_ACCESS_TOKEN_ENDPOINT, separator=separator, query=urlencode(query_dict) ) token_method = settings.AUTH_OAUTH2_ACCESS_TOKEN_METHOD.lower() requests_func = getattr(requests, token_method, requests.get) @@ -118,8 +122,12 @@ class OAuth2Backend(JMSModelBackend): } logger.debug(log_prompt.format('Get userinfo endpoint')) - userinfo_url = '{url}?{query}'.format( - url=settings.AUTH_OAUTH2_PROVIDER_USERINFO_ENDPOINT, + if '?' in settings.AUTH_OAUTH2_PROVIDER_USERINFO_ENDPOINT: + separator = '&' + else: + separator = '?' + userinfo_url = '{url}{separator}{query}'.format( + url=settings.AUTH_OAUTH2_PROVIDER_USERINFO_ENDPOINT, separator=separator, query=urlencode(query_dict) ) userinfo_response = requests.get(userinfo_url, headers=headers) diff --git a/apps/authentication/backends/oauth2/views.py b/apps/authentication/backends/oauth2/views.py index c0fe06759..056f16b31 100644 --- a/apps/authentication/backends/oauth2/views.py +++ b/apps/authentication/backends/oauth2/views.py @@ -26,8 +26,13 @@ class OAuth2AuthRequestView(View): ) } - redirect_url = '{url}?{query}'.format( + if '?' in settings.AUTH_OAUTH2_PROVIDER_AUTHORIZATION_ENDPOINT: + separator = '&' + else: + separator = '?' + redirect_url = '{url}{separator}{query}'.format( url=settings.AUTH_OAUTH2_PROVIDER_AUTHORIZATION_ENDPOINT, + separator=separator, query=urlencode(query_dict) ) logger.debug(log_prompt.format('Redirect login url'))