Проблемы с сохранением пароля с помощью избыточных форм в iOS Safari - PullRequest
1 голос
/ 13 мая 2019

В моем проекте используются редукс-формы, и я пытаюсь заставить автозаполнение работать с формой входа и регистрации.Я следил за всеми документами, которые мог найти при автозаполнении, и это работает для любого браузера, кроме iOS Safari.

Я добавил все применимые атрибуты автозаполнения, и форма отправляется, как и должно быть.Когда пользователь завершает вход в систему или регистрируется, затем переходит к взаимодействию со страницей по-другому, он работает нормально.Имея это в виду, я попробовал пару вещей, чтобы заставить его всплывать.При попытке войти я перенаправил пользователя.Ничего такого.Я выдал предупреждение.Ничего такого.и теперь я здесь!

Форма входа:

<form onSubmit={this.login.bind(this)} autoComplete="on">
                <Field
                  component={TextField}
                  id="email"
                  fullWidth
                  autoComplete="email"
                  hintText="Email"
                  name="email"
                  type="email"
                  normalize={R.toLower}
                  validate={[required, email]}
                  {...FormElements.styles.text}
                />
                <Field
                  id="password"
                  autoFocus={!!login_email}
                  component={TextField}
                  fullWidth
                  autoComplete="current-password"
                  hintText="Password"
                  name="password"
                  type="password"
                  onKeyPress={this.passwordOnKeyPressHandler.bind(this)}
                  validate={[required]}
                  {...FormElements.styles.text}
                />
                {error && <div className="form-error m-t">{error}</div>}
                <div className="text-center m-t">
                  <div className="m-b-sm">
                    Don&apos;t have an account?{" "}
                    <a
                      className="register-link"
                      href="javascript:void(0)"
                      onClick={() =>
                        this.props.toggle(this.props.VIEWS.REGISTER)
                      }
                    >
                      Register
                    </a>
                  </div>
                  <div className="">
                    <a
                      className="forgot-password-link"
                      href="javascript:void(0)"
                      onClick={() => this.props.toggle(this.props.VIEWS.FORGOT)}
                    >
                      forgot password?
                    </a>
                  </div>
                </div>
                <div className="register__footer visible-md visible-lg">
                  {this.renderBtn({ size: "large" })}
                </div>
                <div className="auth__switch-view visible-xs visible-sm">
                  <div className="m-t">{this.renderBtn()}</div>
                </div>
              </form>

кнопка:

<div className="register__action-btn-container">
        <Button
          type="submit"
          disabled={submitting}
          label={submitting ? "Logging in ..." : "Login"}
          size={params && params.size}
        />
      </div>

функция входа:

 login(e) {
    // e.preventDefault();
    document.querySelector('input[name="password"]').blur();
    // this.props.handleSubmit();
    $S.dispatch(submit(LOGIN_FORM));
    // On mobile, we have to force the username and password to be stored.
    miscUtils.triggerSavePasswordPrompt(e);
  }

Пытаясьзаставить его ...

function triggerSavePasswordPrompt(event) {
  if (window.PasswordCredential && event) {
    let c = new PasswordCredential(event.target);
    navigator.credentials.store(c);
  } else {
    alert("shizs effed yo")
  }
}

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

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