Как мне изменить приложение django, которое использует allauth, чтобы оно возвращало ответ 401 при предоставлении неверных учетных данных для входа?
Я пытался поместить пользовательскую логику в пользовательский ModelBackend, но не нашел способа изменить там код состояния ответа.
Я также пытался добавить собственную логику в CustomAccountAdapter.authentication_failed, но там та же проблема: я не нашел способа изменить код состояния.
@metatoaster, я пытался поднять ImmediateHttpResponse в нескольких местах, но получилось только 500, у вас есть идеи, где я мог бы его поднять?
Если это не работает внутри вашего пользовательского authentication_failed, возможно, вы не включили allauth.account.middleware.AccountMiddleware как часть конфигурации промежуточного программного обеспечения для вашего сайта django, как указано в кратком руководстве (и в примечаниях к изменениям выпуска).






Мне удалось изменить код состояния http, добавив последнее промежуточное программное обеспечение
class Auth401Middleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if request.path == "/accounts/login/" and request.method == "POST" and not request.user.is_authenticated:
response.status_code = 401
return response
Не похоже, что этот метод (или что-либо, что его использует) имеет какое-либо отношение к возврату
HTTPResponse, однако в пакете есть промежуточное программное обеспечение учетной записи, которое обрабатывает пользовательское исключение ImmediateHTTPResponse, ваша пользовательская логика может создать собственное ответ и используйте это исключение, чтобы его вызвать.