Как я могу получить браузер с просьбой сохранить пароль? - PullRequest
127 голосов
/ 04 марта 2010

Привет, я работаю над веб-приложением, в котором есть диалоговое окно входа в систему, которое работает следующим образом:

  1. Пользователь нажимает кнопку «войти»
  2. Форма входа HTML загружается с AJAXи отображается в DIV на странице
  3. Пользователь вводит пользователя / передает в поля и нажимает кнопку отправки.Это НЕ <form> - пользователь / пароль передается через AJAX
  4. Если с пользователем / паролем все в порядке, страница перезагружается, когда пользователь вошел в систему.
  5. Если пользователь / пароль плохой, страница делаетНЕ перезагружается, но в DIV появляется сообщение об ошибке, и пользователь пытается повторить попытку.

Вот проблема: браузер никогда не предлагает обычную подсказку «Сохранить этот пароль? Да / Никогда / Не сейчас», что он делаетдля других сайтов.

Я попытался обернуть теги <div> in <form> в "autocomplete = 'on'", но это не имело никакого значения.

Можно ли заставить браузерпредложить сохранить пароль без серьезной переделки моего входа?

спасибо, Эрик

ps, чтобы добавить к моему вопросу, я определенно работаю с браузерами, которые хранят пароли, и яникогда не нажимал "никогда для этого сайта" ... это техническая проблема с браузером, который не обнаружил, что это форма входа, а не ошибка оператора: -)

Ответы [ 18 ]

0 голосов
/ 04 марта 2010

Ваш сайт, вероятно, уже находится в списке, где браузеру запрещается сохранять пароль. В Firefox Параметры -> Безопасность -> Запомнить пароль для сайтов [флажок] - исключения [кнопка]

0 голосов
/ 21 января 2014

Для меня это работает намного лучше, потому что он на 100% ajaxed и браузер обнаруживает логин.

<form id="loginform" action="javascript:login(this);" >
 <label for="username">Username</label>
 <input name="username" type="text" value="" required="required" />
 <label for="password">Password</label>
 <input name="password" type="password" value="" required="required" />
 <a href="#" onclick="document.getElementById("loginform").submit();"  >Login</a>
</form>
0 голосов
/ 25 сентября 2013

У меня была похожая проблема, вход был выполнен с помощью ajax, но браузеры (firefox, chrome, safari и IE 7-10) не предлагали бы сохранять пароль, если форма (#loginForm) отправлена ​​с ajax.

Как РЕШЕНИЕ Я добавил скрытую отправку ввода (#loginFormHiddenSubmit) в форму, которая была отправлена ​​ajax, и после того, как вызов ajax вернул бы успех, я бы вызвал щелчок для скрытой отправки. Страница любым способом должна была обновиться. Клик может быть вызван с:

jQuery('#loginFormHiddenSubmit').click();

Причина, по которой я добавил скрытую кнопку отправки, заключается в следующем:

jQuery('#loginForm').submit();

не предлагает сохранять пароль в IE (хотя это работает в других браузерах).

0 голосов
/ 04 марта 2010

Не каждый браузер (например, IE 6) имеет опции для запоминания учетных данных.

Одна вещь, которую вы можете сделать, - это (после успешного входа пользователя) сохранить информацию о пользователе с помощью cookie и иметь опцию «Запомнить меня на этом компьютере». Таким образом, когда пользователь снова приходит (даже если он вышел из системы), ваше веб-приложение может извлечь файл cookie и получить информацию о пользователе (идентификатор пользователя + идентификатор сеанса) и позволить ему продолжить работу.

Надеюсь, это может быть наводящим на размышления. : -)

0 голосов
/ 07 мая 2013

добавить немного больше информации в ответ @Michal Roharik.

если ваш ajax-вызов вернет URL-адрес возврата, вы должны использовать jquery для изменения атрибута действия формы на этот URL-адрес перед вызовом form.submit

отл.

$(form).attr('action', ReturnPath);
form.submitted = false;
form.submit(); 
0 голосов
/ 04 марта 2010

Использование cookie, вероятно, будет лучшим способом сделать это.

У вас может быть флажок "Запомнить меня?"и иметь форму создания куки для хранения // логина пользователя // информация.РЕДАКТИРОВАТЬ: Информация о сеансе пользователя

Чтобы создать cookie, вам нужно обработать форму входа с помощью PHP.

0 голосов
/ 04 марта 2010

Правда в том, что вы не можете заставить браузер спрашивать. Я уверен, что в браузере есть собственный алгоритм для предположения, если вы ввели имя пользователя / пароль, например, для поиска ввода type="password", но вы не можете установить что-либо для принудительной установки браузера.

Вы можете, как другие предлагают, добавить информацию о пользователе в файл cookie. Если вы сделаете это, , вам лучше как минимум зашифровать его и не хранить свой пароль. Возможно, храните их имя пользователя не более.

0 голосов
/ 01 декабря 2011

Вы можете прикрепить диалог к ​​форме, чтобы все эти входные данные были в форме. Другое дело, сделать текстовое поле пароля сразу после текстового поля имени пользователя.

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