«Пожалуйста, подтвердите, для какого пользователя вы меняете пароль» - PullRequest
19 голосов
/ 18 ноября 2009

Итак, я только что сделал форму смены пароля для моего приложения rails. Это как любая другая очень типичная форма смены пароля.

Так что после нескольких раз тестирования я начал видеть всплывающее окно с надписью

"Please confirm which user you are changing the password for"

Теперь это действительно немного взволновало меня, так как я знаю, что не писал никакого кода для таких вещей, и я определенно не хочу, чтобы пользователи меняли пароли других пользователей.

Я скоро узнал, что это менеджер паролей firefox. Так что теперь я успокаиваюсь по этому поводу, но, тем не менее, я не хочу, чтобы это случилось с другими людьми, использующими мой сайт.

Откуда firefox знает, что он все равно меняет пароль? Может быть, это имена полей моего пароля или даже URL-адрес действия моей формы (/ account / change_password)? Есть ли способ заставить его не делать этого? Кто-нибудь еще имел опыт с этим?

Ответы [ 6 ]

17 голосов
/ 18 ноября 2009

Когда пользователи вашего сайта входят в первый раз, Firefox спросит пользователя, хотят ли они сохранить пароль или нет. Если они говорят «да», пароль сохраняется.

Теперь, если пользователь изменит свой пароль на вашем сайте, Firefox не узнает об этом немедленно. Но когда пользователь входит в систему с новым паролем, Firefox распознает, что введенный вами пароль отличается от того, который он имеет в файле. Поэтому он спрашивает, хотите ли вы сохранить этот пароль.

Допустим, у пользователя на вашем сайте теперь есть две учетные записи, и они меняют пароль на одну из них. Когда они заходят, чтобы войти в систему с этим пользователем, и Firefox пытается обновить свои записи, он может спросить «для какого пользователя вы меняете пароль?»

Это функциональность на стороне клиента, которую вы не можете изменить. Пользователь выбрал браузер, который отслеживает их учетные записи, и это не то, что вы можете предотвратить.

10 голосов
/ 09 августа 2011

Когда у меня возникла та же проблема (в форме смены пароля, но не в форме входа в систему), единственным способом избежать всплывающего окна было отключение автозаполнения в форме смены пароля:

<form autocomplete="off" onsubmit="..." ...>

Это задокументировано в Mozilla Developer Network , но, к сожалению, означает, что ваш HTML не будет проверяться, как обсуждалось в в этом вопросе переполнения стека . Небольшая цена, которую нужно заплатить, чтобы исправить то, что большинство пользователей примет, - это ошибка на вашем сайте.

5 голосов
/ 18 ноября 2009

Пользователи нашего сайта увидят эту ошибку, только если они войдут в систему с несколькими аккаунтами. Я бы не стал вносить изменения в ваше приложение, основываясь на этом поведении Firefox.

3 голосов
/ 07 апреля 2015

Поместите ниже строки внутри формы, это будет работать:

<input type ="text" name="username" value="" style="display:none">
1 голос
/ 19 февраля 2014

Мне не удалось заставить его работать со скрытым полем, содержащим имя пользователя. Мне нужно было ввести текст, содержащий имя пользователя, и Firefox не спросит вас, для какого пользователя вы хотите сменить пароль. Кроме того, этот ввод текста может быть скрыт с помощью базового CSS.

Ex:

<html>
<form action="#" method="post">
    <input type="text" name="user" value="chose" style="display: none" />
    Pass: <input type="password" name="old_pass"/>
    New pass: <input type="password" name="pass"/>
    <input type="submit"/>
</form>
</html>
1 голос
/ 21 апреля 2011

Это специфическая проблема FireFox, и ее достаточно легко исправить.

Браузер замечает несколько полей пароля в форме и предполагает, что вы меняете пароль, но не может легко определить, какой пользователь вошел в систему. Чтобы помочь, введите имя пользователя в форму:

<INPUT TYPE="hidden" NAME="username" VALUE="<?php echo("$name"); ?>">

Нечто подобное будет работать, если вы сначала установите переменную в php!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...