From c21217d50c0929b5faedee5279a83e3f4a294eb7 Mon Sep 17 00:00:00 2001 From: Bai Date: Fri, 16 Jul 2021 12:37:14 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B9=20LOGIN=5FREDIRECT=5FTO=5FBACKEND?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/authentication/views/login.py | 29 ++++++++++++++++++++++------- apps/jumpserver/conf.py | 2 +- apps/jumpserver/settings/custom.py | 2 +- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/apps/authentication/views/login.py b/apps/authentication/views/login.py index 195496e9b..0eef00579 100644 --- a/apps/authentication/views/login.py +++ b/apps/authentication/views/login.py @@ -46,24 +46,39 @@ class UserLoginView(mixins.AuthMixin, FormView): return None next_url = request.GET.get('next') or '/' auth_type = '' - auth_url = '' + if settings.AUTH_OPENID: auth_type = 'OIDC' - auth_url = reverse(settings.AUTH_OPENID_AUTH_LOGIN_URL_NAME) + f'?next={next_url}' - elif settings.AUTH_CAS: + openid_auth_url = reverse(settings.AUTH_OPENID_AUTH_LOGIN_URL_NAME) + f'?next={next_url}' + else: + openid_auth_url = None + + if settings.AUTH_CAS: auth_type = 'CAS' - auth_url = reverse(settings.CAS_LOGIN_URL_NAME) + f'?next={next_url}' - if not auth_url: + cas_auth_url = reverse(settings.CAS_LOGIN_URL_NAME) + f'?next={next_url}' + else: + cas_auth_url = None + + if not any([openid_auth_url, cas_auth_url]): return None - if settings.LOGIN_REDIRECT_FLASH_MESSAGE_INTERVAL == 0: + if settings.LOGIN_REDIRECT_TO_BACKEND == 'OPENID' and openid_auth_url: + auth_url = openid_auth_url + + elif settings.LOGIN_REDIRECT_TO_BACKEND == 'CAS' and cas_auth_url: + auth_url = cas_auth_url + + else: + auth_url = openid_auth_url or cas_auth_url + + if settings.LOGIN_REDIRECT_TO_BACKEND: redirect_url = auth_url else: message_data = { 'title': _('Redirecting'), 'message': _("Redirecting to {} authentication").format(auth_type), 'redirect_url': auth_url, - 'interval': settings.LOGIN_REDIRECT_FLASH_MESSAGE_INTERVAL, + 'interval': 3, 'has_cancel': True, 'cancel_url': reverse('authentication:login') + '?admin=1' } diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index 72ad7f3c5..87577d696 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -306,7 +306,7 @@ class Config(dict): 'SESSION_EXPIRE_AT_BROWSER_CLOSE_FORCE': False, 'FORGOT_PASSWORD_URL': '', 'HEALTH_CHECK_TOKEN': '', - 'LOGIN_REDIRECT_FLASH_MESSAGE_INTERVAL': 3, + 'LOGIN_REDIRECT_TO_BACKEND': None, # 'OPENID / CAS 'TERMINAL_RDP_ADDR': '' } diff --git a/apps/jumpserver/settings/custom.py b/apps/jumpserver/settings/custom.py index d8f763b0d..36a2357cf 100644 --- a/apps/jumpserver/settings/custom.py +++ b/apps/jumpserver/settings/custom.py @@ -129,4 +129,4 @@ HEALTH_CHECK_TOKEN = CONFIG.HEALTH_CHECK_TOKEN TERMINAL_RDP_ADDR = CONFIG.TERMINAL_RDP_ADDR SECURITY_LUNA_REMEMBER_AUTH = CONFIG.SECURITY_LUNA_REMEMBER_AUTH -LOGIN_REDIRECT_FLASH_MESSAGE_INTERVAL = CONFIG.LOGIN_REDIRECT_FLASH_MESSAGE_INTERVAL +LOGIN_REDIRECT_TO_BACKEND = CONFIG.LOGIN_REDIRECT_TO_BACKEND