Skip to content

Commit 15e448c

Browse files
committed
Avoid running two queries when using session token validation
1 parent 2e8d531 commit 15e448c

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

rest_framework_sso/authentication.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,18 @@ def authenticate_credentials(self, payload):
6565

6666
if api_settings.VERIFY_SESSION_TOKEN:
6767
try:
68-
SessionToken.objects.active().get(pk=payload.get('sid'), user_id=payload.get('uid'))
68+
session_token = SessionToken.objects.\
69+
active().\
70+
select_related('user').\
71+
get(pk=payload.get('sid'), user_id=payload.get('uid'))
72+
user = session_token.user
6973
except SessionToken.DoesNotExist:
7074
raise exceptions.AuthenticationFailed(_('Invalid token.'))
71-
72-
try:
73-
user = user_model.objects.get(pk=payload.get('uid'))
74-
except user_model.DoesNotExist:
75-
raise exceptions.AuthenticationFailed(_('Invalid token.'))
75+
else:
76+
try:
77+
user = user_model.objects.get(pk=payload.get('uid'))
78+
except user_model.DoesNotExist:
79+
raise exceptions.AuthenticationFailed(_('Invalid token.'))
7680

7781
if not user.is_active:
7882
raise exceptions.AuthenticationFailed(_('User inactive or deleted.'))

0 commit comments

Comments
 (0)