from rest_framework.authentication import SessionAuthentication from rest_framework.request import Request class PidSessionAuthentication(SessionAuthentication): """`SessionAuthentication` padrão do DRF não define `authenticate_header()` (devolve `None`) — sem um cabeçalho `WWW-Authenticate` pra anunciar, o DRF rebaixa `NotAuthenticated` de 401 pra 403 (`rest_framework.views.exception_handler`), já que semanticamente 401 exige indicar como o cliente deveria se autenticar. O frontend (`pidApiRequest`, `api.js`) só redireciona pro login em 401 — com o padrão do DRF, qualquer request sem sessão ativa (cookie expirado, nunca logado) voltava 403, e a página ficava travada mostrando o shell vazio/sem usuário em vez de voltar pro login. Devolver um valor não-vazio aqui mantém o status em 401, sem acionar nenhum prompt nativo do navegador (só "Basic"/"Digest" fazem isso). """ def authenticate_header(self, request: Request) -> str: return "Session"