Safari Autofill: триггер предложения пароля в регистрационной форме Devise

У меня очень стандартное приложение Rails 4, использующее Devise 3

Я хочу, чтобы регистрационная форма вызывала предложения пароля в текущей (Mavericks) версии Safari:

использовать предложенный пароль Safari

Связка ключей iCloud включена, и я получаю предложения на других страницах, только моя форма по какой-то причине не работает с этим.

Я не могу понять, что именно нужно, чтобы включить предложения.

Вот форма, которую генерирует devise:

<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post">
  <div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" />
    <input name="authenticity_token" type="hidden" value="SKtqmi1L/BKcTE/Hvlvw1H3ZRH8nd2UNiNnVILuLS/E=" />
  </div>

  <div>
    <label for="user_email">Email</label><br />
    <input autofocus="autofocus" id="user_email" name="user[email]" type="email" value="" />
  </div>

  <div>
    <label for="user_password">Password</label><br />
    <input id="user_password" name="user[password]" type="password" />
  </div>

  <div>
    <label for="user_password_confirmation">Password confirmation</label><br />
    <input id="user_password_confirmation" name="user[password_confirmation]" type="password" />
  </div>

  <div><input name="commit" type="submit" value="Sign up" /></div>
</form>
  • Как мне нужно изменить форму, чтобы вызвать предложения пароля

  • есть ли где-нибудь полезная документация об этой функции?


person levinalex    schedule 13.11.2013    source источник
comment
надеюсь, что кто-то ответит на этот вопрос в ближайшее время. Я пробовал это безуспешно: seanrucker.com/   -  person DjangoSi    schedule 31.12.2013


Ответы (3)


Apple принимает новые свойства autocomplete: current-password и new-password

У меня была такая же проблема с моим сайтом, который предназначен для тестовых случаев генерации паролей для улучшения генераторов паролей.

Как указано в [PDF] руководстве, подготовленном Apple, Свойство autocomplete теперь принимает заданные значения, чтобы решить эту проблему.
См. спецификацию здесь вместе с другими допустимыми значениями: https://html.spec.whatwg.org/multipage/forms.html#attr-fe-autocomplete-new-password

    <form method="post" action="/tests/4/register-submit" >
  <label>
    <div>Name</div>
    <input
      name="name"
      placeholder="name"
      autocomplete="name"
      type="text"
      pattern=".{4,}"
      title="Needs to be 4 characters long."
      required
    />
  </label>
  <label>
    <div>Username</div>
    <input
      name="username"
      placeholder="Username"
      type="text"
      autocomplete="username"
      pattern=".{4,}"
      title="Needs to be 4 characters long."
      required
    />
  </label>
  <label>
    <div>Password</div>
    <input
      name="password"
      placeholder="Password"
      type="password"
      autocomplete="new-password"
      required
    />
  </label>
  <input type="submit" value="Register" />
</form>

Этот код работает благодаря используемому свойству autocomplete="new-password". autocomplete="current-password" также возможно для форм входа.

Это было проверено очень полезным: @simevidas

person jonathanKingston    schedule 12.04.2015
comment
Прекрасный ответ. Досадно, что правила создания надежного пароля с использованием регулярного выражения Pattern, похоже, не подсказывают генератору паролей Apple создание действительного пароля. У них есть собственная разметка, которую вы можете найти и протестировать здесь: developer.apple.com/password-rules Еще одна раздражающая привычка Safari заключается в том, что если он один раз предлагает пароль для веб-сайта, он больше не предлагает вариант «Предложить пароль» для того же сайта. Даже нажав кнопку «Не использовать», он снова и снова предлагает одно и то же предложение. Я думаю, что есть еще способ использовать автоген паролей. - person TRT 1968; 17.02.2020

Я проверил ваш код, и он успешно предложил пароль. Итак, у вас есть проблема, отличная от вашего HTML.

Убедитесь, что верно следующее:

  1. Ваш сервер правильно выводит вашу веб-страницу в виде содержимого HTML с кодом ответа 200. (Вы можете увидеть это с помощью инструментов разработчика любого браузера.)

  2. Вы используете последнюю версию Safari (7.+)

  3. Автозаполнение имен пользователей и паролей проверяется в Safari > «Настройки» > «Пароли».

  4. Попробуйте удалить все сохраненные пароли для вашего домена в Safari.

  5. Вы установили флажок Связка ключей Вкл в iCloud (Системные настройки > iCloud).

person gavanon    schedule 11.09.2014
comment
Почему это не работает на этих формах? password-generation-test-cases.herokuapp.com - person Šime Vidas; 12.04.2015

Возможно, добавление атрибута autocomplete="on" к форме или входному тегу работает. http://www.w3schools.com/HTML/html5_form_attributes.asp

person David    schedule 25.06.2014