Как правильно вызвать нужную ошибку или переопределить ошибку в классе?

В моем коде для проверки token, для любого error или invalid token, я всегда выдаю error 500.

Мне нужно получить error 401, или 403.

Вот часть кода.

class AzureVerifyTokenError(Exception):
    pass


class InvalidAuthorizationToken(AzureVerifyTokenError):
    def __init__(self, details=''):
        super().__init__(f'Invalid authorization token: {details}')


def verify_jwt(*, token, valid_audiences, jwks_uri, issuer, verify=True):
    public_key = get_public_key(token=token, jwks_uri=jwks_uri)
    try:
        decoded = jwt.decode(
            token,
            public_key,
            verify=verify,
            algorithms=['RS256'],
            audience=valid_audiences,
            issuer=issuer,
        )
    except jwt.exceptions.PyJWTError as exc:
        raise InvalidAuthorizationToken(exc.__class__.__name__)
    else:
        return decoded

То, что я уже пробовал: В части, где есть try, я пытался вернуть 401.

from rest_framework import status
from rest_framework.response import Response
    
    .....
    except jwt.exceptions.PyJWTError:
        return Response(status=status.HTTP_401_UNAUTHORIZED)
    .....

Но это, очевидно, не работает. Или я не импортирую то, что мне нужно, или я не использую то, что мне нужно

Я делаю что-то не так, или я что-то упускаю. Мне даже кажется, что это должно быть просто, но я совершенно запутался. Возможно, class AzureVerifyTokenError(Exception): pass пуст по какой-то причине, и я могу установить там ошибку, но как?

Любые подсказки и примеры помогут мне. Спасибо.

Вернуться на верх