Подтвердить что ты не робот

"Пожалуйста, подтвердите, какой пользователь вы меняете пароль для"

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

Итак, после нескольких тестов, я начал видеть всплывающее окно с сообщением

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

<input type ="text" name="username" value="" style="display:none">

Ответ 5

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

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

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

Что-то вроде этого будет работать, пока вы сначала установите переменную в php!

Ответ 6

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

Пример:

<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>