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

Опубликовано: 12 мая 2026 г.

Режим мгновенного доступа к пользовательскому интерфейсу для авторизации — это веб-функция, разработанная для оптимизации процессов входа в систему. Эта функция позволяет заблаговременно предлагать пользователям ключи доступа и управляемые пароли непосредственно в момент входа в систему, например, при нажатии кнопки «Войти» или «Оформить заказ» .

Абстрактный

Режим немедленного доступа к пользовательскому интерфейсу (Immediate UI mode) обеспечивает мгновенный сбой, если локально отсутствуют учетные данные. Такое поведение аналогично API preferImmediatelyAvailableCredentials используемому на мобильных платформах, таких как Android и iOS. Если учетные данные существуют, браузер немедленно отображает пользователю диалоговое окно входа в систему. В противном случае он молча отклоняет промис, позволяя вам предоставить альтернативные методы входа, например, форму авторизации, без нарушения пользовательского опыта.

По состоянию на май 2026 года Chrome — единственный браузер, поддерживающий режим немедленного отображения пользовательского интерфейса.

Проверьте предварительные требования

Для использования режима мгновенного отображения пользовательского интерфейса у пользователя должны быть доступны соответствующие учетные данные локально на его устройстве. В Chrome к таким учетным данным относятся:

  • Пароли, сохраненные в таких сервисах, как Google Password Manager , Windows Hello или iCloud Keychain .
  • Пароли, сохраненные в Google Менеджере паролей.

Если локальные учетные данные отсутствуют, API отклоняет запрос, не отображая диалоговое окно входа в систему.

Обнаружение поддержки функций

Перед вызовом режима немедленного доступа к пользовательскому интерфейсу убедитесь, поддерживает ли браузер возможность immediateGet с помощью метода PublicKeyCredential.getClientCapabilities() . Если она не поддерживается, используйте существующие методы входа в систему, такие как формы ввода электронной почты и пароля, подтверждение номера телефона или вход через социальные сети.

async function checkImmediateAvailability() {
  try {
    const capabilities = await PublicKeyCredential.getClientCapabilities();
    if (capabilities.immediateGet) {
      console.log("Immediate UI mode is supported.");
    } else {
      console.log("Immediate UI mode is NOT supported.");
    }
  } catch (error) {
    console.error("Error checking client capabilities:", error);
  }
}

Для более широкой поддержки браузеров используйте полифилл, доступный в репозитории WebAuthn Polyfills на GitHub .

Запросить учетные данные

Для запуска процесса немедленной авторизации вызовите метод navigator.credentials.get() с полем uiMode , установив значение 'immediate' .

Указав password: true в запросе, пользователи смогут воспользоваться этой функцией, если браузер поддерживает ввод паролей .

// This call must follow a user gesture, like a button click
button.addEventListener('click', async (event) => {
  event.preventDefault();
  try {
    const cred = await navigator.credentials.get({
      password: true,
      publicKey: {
        challenge: serverGeneratedChallenge,
        rpId: 'example.com'
      },
      uiMode: 'immediate',
    });
    // Handle successful sign-in
  } catch (error) {
    if (error.name === 'NotAllowedError') {
      // Provide a fallback sign-in experience
      showFallbackUI();
    }
  }
});

Для обеспечения резервного способа входа в систему необходимо обработать NotAllowedError в блоке catch .

Обработка процессов авторизации

Режим мгновенного отображения пользовательского интерфейса можно реализовать в двух основных сценариях.

Войти с помощью кнопки

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

  1. Пользователь нажимает кнопку «Войти» .
  2. На вашем сайте вызывается метод navigator.credentials.get() с uiMode: "immediate" .
  3. Браузер проверяет наличие локальных учетных данных.
  4. Если браузер обнаружит учетные данные, он немедленно отобразит диалоговое окно входа в систему, где пользователь сможет выбрать учетную запись.
  5. Если браузер не находит учетные данные или пользователь закрывает диалоговое окно немедленного входа в систему, он выдает NotAllowedError .
  6. Если будет выброшено NotAllowedError , ваш сайт продолжит работу со стандартной страницей входа в систему.

Войдите в систему перед оформлением заказа.

Предлагайте учетные данные заранее, до того, как пользователь выполнит действие, требующее аутентификации, например, начнет процесс оформления заказа в интернет-магазине.

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

  1. Пользователь инициирует действие, например, нажимает кнопку «Оформить заказ» в процессе совершения покупок.
  2. На вашем сайте вызывается метод navigator.credentials.get() с uiMode: "immediate" .
  3. Если учетные данные существуют, пользователь выбирает один из них для завершения входа в систему.
  4. Если учетные данные отсутствуют, браузер выдает ошибку и не отображает диалоговое окно входа в систему. Пользовательский интерфейс остается неизменным, и вы можете перенаправить пользователя на существующий экран оформления заказа, где могут быть доступны другие варианты входа или форма для оформления заказа без регистрации.

Ознакомьтесь с мерами по обеспечению конфиденциальности и безопасности.

Браузер принимает важные меры для защиты конфиденциальности пользователей:

  • Требование к жесту пользователя : Для предотвращения скрытого запроса необходимо инициировать вызов API с помощью жеста пользователя, например, щелчка мышью. Вызов не расходует активацию.
  • Ограничения режима инкогнито : запросы в режиме инкогнито или приватных сессиях всегда вызывают NotAllowedError .
  • Нет списков разрешенных запросов : запросы с непустым списком allowCredentials вызывают NotAllowedError , чтобы предотвратить отслеживание между сессиями.
  • Программная отмена невозможна : вы не можете использовать параметр signal для программного закрытия диалогового окна немедленного входа в систему.