mirror of
https://github.com/Tivix/django-rest-auth.git
synced 2024-12-02 13:53:43 +03:00
28 lines
949 B
Python
28 lines
949 B
Python
|
from django.conf import settings
|
||
|
from rest_framework_simplejwt.authentication import JWTAuthentication
|
||
|
|
||
|
|
||
|
class JWTCookieAuthentication(JWTAuthentication):
|
||
|
"""
|
||
|
An authentication plugin that hopefully authenticates requests through a JSON web
|
||
|
token provided in a request cookie (and through the header as normal, with a
|
||
|
preference to the header).
|
||
|
"""
|
||
|
|
||
|
def authenticate(self, request):
|
||
|
cookie_name = getattr(settings, 'JWT_AUTH_COOKIE', None)
|
||
|
header = self.get_header(request)
|
||
|
if header is None:
|
||
|
if cookie_name:
|
||
|
raw_token = request.COOKIES.get(cookie_name)
|
||
|
else:
|
||
|
return None
|
||
|
else:
|
||
|
raw_token = self.get_raw_token(header)
|
||
|
|
||
|
if raw_token is None:
|
||
|
return None
|
||
|
|
||
|
validated_token = self.get_validated_token(raw_token)
|
||
|
return self.get_user(validated_token), validated_token
|