Обновление заголовков запросов в Django Middleware
Прежде чем я начну жаловаться на свою проблему, я должен признать, что я не уверен, что мой подход является лучшим способом решения моей проблемы. Я использую Nuxt в качестве фронтенда и хочу проверить/обновить токен доступа JWT, если срок его действия истек, но токен обновления все еще действителен.
Привет, Я сейчас пытаюсь написать промежуточное ПО на Django, которое отвечает за обновление токена доступа JWT. Однако тест говорит, что я не авторизован, хотя я обновил заголовок.
class JWTRefreshMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request: HttpRequest):
if request.headers.get("Authorization"):
try:
AccessToken(
str(request.headers.get("Authorization")).split(" ")[1], verify=True
)
except TokenError:
if refresh_token_cookie := request.COOKIES.get("refresh_token"):
try:
refresh_token = RefreshToken(refresh_token_cookie, verify=True)
user = CustomUser.objects.get(
id=refresh_token.payload.get("user_id")
)
new_access_token = str(AccessToken.for_user(user))
request.META["HTTP_AUTHORIZATION"] = (
f"Bearer {new_access_token}"
)
except TokenError:
pass
response: HttpResponse = self.get_response(request)
return response
Конечная точка, которую я пытаюсь вызвать, выглядит следующим образом:
from ninja_jwt.authentication import JWTAuth
router = Router()
@router.get("/profile", response={200: UserProfileResponse}, auth=JWTAuth())
def get_user_profile(request):
# Some Code
Я также пытался переопределить request.headers["Authorization"]
, но...
TypeError: 'HttpHeaders' object does not support item assignment