mirror of
https://github.com/andwati/store-api.git
synced 2026-10-18 09:22:53 +00:00
27 lines
927 B
Python
27 lines
927 B
Python
import jwt
|
|
from django.conf import settings
|
|
from django.contrib.auth.models import User
|
|
from rest_framework import authentication, exceptions
|
|
|
|
|
|
class JWTAuthentication(authentication.BaseAuthentication):
|
|
def authenticate(self, request):
|
|
|
|
auth_data = authentication.get_authorization_header(request)
|
|
|
|
if not auth_data:
|
|
return None
|
|
|
|
prefix, token = auth_data.decode("utf-8").split(" ")
|
|
|
|
try:
|
|
payload = jwt.decode(token, settings.JWT_SECRET_KEY, algorithms="HS256")
|
|
user = User.objects.get(username=payload["username"])
|
|
return (user, token)
|
|
except jwt.DecodeError as err:
|
|
raise exceptions.AuthenticationFailed("Your token is invalid, please login")
|
|
except jwt.ExpiredSignatureError as err:
|
|
raise exceptions.AuthenticationFailed("Your token is expired, login")
|
|
|
|
return super().authenticate(request)
|