Скажите веб-браузеру, что логин не удался, поэтому он не просит запомнить пароль

Я пишу систему входа для веб-сайта, но когда пользователь получает учетные данные пользователя неправильно, браузер (я пробовал Firefox и Chrome) все еще спрашивает, хочет ли пользователь сохранить пароль. Как я могу сказать браузеру, что произошел сбой входа в систему, чтобы он не просил пользователя сохранять плохие учетные данные?

Я пробовал отправлять коды статуса HTTP 403 и 500 (вместо обычного 200), но не работает. Есть ли способ сделать то, что я хочу?

P.S. Я не хочу использовать механизм проверки подлинности HTTP 401, поскольку я хочу использовать форму HTML для входа, а не в диалоговое окно браузера.

Ответ 1

Глядя на Исходный код Chrome, чтобы определить, как это работает (см. OnPasswordFormsRendered), для его определения выполняется несколько эвристик. Похоже, что он делает это:

  • Пользователь отправляет форму
  • Дождитесь завершения загрузки страницы.
  • Является ли такая же форма видимой? Если да, предположим, что форма представлена ​​из-за неверного имени пользователя или пароля.

При неудачной попытке входа в систему пользователя; они должны быть представлены с той же формой снова. Казалось бы, ваш экран "Logon Failed" слишком отличается от вашего первоначального экрана входа в браузер, чтобы увидеть, что он является одной и той же формой.

Не похоже, что код состояния HTTP имеет значение для того, чтобы предлагать сохранить пароль.

Более новые версии Chrome принимают в аккаунт код статуса HTTP. Если код состояния находится между 400 и 600, он не будет предлагать сохранить пароль.

Другие детали довольно хорошо документированы с комментариями в том же исходном файле.

Ответ 2

Попробуйте выполнить попытку HTTP 401: "Аналогично 403 Запрещено, но специально для использования, когда возможна аутентификация, но не удалось или еще не предоставлена". (Цитата из Википедии).

ИЗМЕНИТЬ: извините. Не читал ваш вопрос достаточно хорошо.