Как правильно вызвать нужную ошибку или переопределить ошибку в классе?
В моем коде для проверки 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
пуст по какой-то причине, и я могу установить там ошибку, но как?
Любые подсказки и примеры помогут мне. Спасибо.