From d0475397d03b68c080d05a877698935f645bf4d0 Mon Sep 17 00:00:00 2001 From: Bai Date: Thu, 9 Feb 2023 19:41:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95=E5=A4=8D=E6=A0=B8?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E8=B7=B3=E8=BF=87=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/api/login_confirm.py | 1 + apps/authentication/middleware.py | 13 ++++++++++++- apps/authentication/mixins.py | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/authentication/api/login_confirm.py b/apps/authentication/api/login_confirm.py index 866964677..d2e5eb14e 100644 --- a/apps/authentication/api/login_confirm.py +++ b/apps/authentication/api/login_confirm.py @@ -20,6 +20,7 @@ class TicketStatusApi(mixins.AuthMixin, APIView): try: self.check_user_login_confirm() self.request.session['auth_third_party_done'] = 1 + self.request.session.pop('auth_third_party_required', '') return Response({"msg": "ok"}) except errors.LoginConfirmOtherError as e: reason = e.msg diff --git a/apps/authentication/middleware.py b/apps/authentication/middleware.py index 5b6d7c06f..da8dab7d9 100644 --- a/apps/authentication/middleware.py +++ b/apps/authentication/middleware.py @@ -61,6 +61,18 @@ class ThirdPartyLoginMiddleware(mixins.AuthMixin): return response if not request.session.get('auth_third_party_required'): return response + + white_urls = [ + 'jsi18n/', '/static/', + 'login/guard', 'login/wait-confirm', + 'login-confirm-ticket/status', + 'settings/public/open', + 'core/auth/login', 'core/auth/logout' + ] + for url in white_urls: + if request.path.find(url) > -1: + return response + ip = get_request_ip(request) try: self.request = request @@ -88,7 +100,6 @@ class ThirdPartyLoginMiddleware(mixins.AuthMixin): guard_url = "%s?%s" % (guard_url, args) response = redirect(guard_url) finally: - request.session.pop('auth_third_party_required', '') return response diff --git a/apps/authentication/mixins.py b/apps/authentication/mixins.py index 7341b4bd1..6efee19cb 100644 --- a/apps/authentication/mixins.py +++ b/apps/authentication/mixins.py @@ -369,7 +369,7 @@ class AuthACLMixin: def check_user_login_confirm(self): ticket = self.get_ticket() if not ticket: - raise errors.LoginConfirmOtherError('', "Not found") + raise errors.LoginConfirmOtherError('', "Not found", '') elif ticket.is_state(ticket.State.approved): self.request.session["auth_confirm_required"] = '' return