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