Опубликовано: 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 .
Обработка процессов авторизации
Режим мгновенного отображения пользовательского интерфейса можно реализовать в двух основных сценариях.
Войти с помощью кнопки
Предоставьте отдельную кнопку входа в систему, обеспечивающую удобство использования без неожиданных запросов.
- Пользователь нажимает кнопку «Войти» .
- На вашем сайте вызывается метод
navigator.credentials.get()сuiMode: "immediate". - Браузер проверяет наличие локальных учетных данных.
- Если браузер обнаружит учетные данные, он немедленно отобразит диалоговое окно входа в систему, где пользователь сможет выбрать учетную запись.
- Если браузер не находит учетные данные или пользователь закрывает диалоговое окно немедленного входа в систему, он выдает
NotAllowedError. - Если будет выброшено
NotAllowedError, ваш сайт продолжит работу со стандартной страницей входа в систему.
Войдите в систему перед оформлением заказа.
Предлагайте учетные данные заранее, до того, как пользователь выполнит действие, требующее аутентификации, например, начнет процесс оформления заказа в интернет-магазине.
В электронной коммерции пользователи без регистрации часто выбирают между входом в существующую учетную запись или оформлением заказа в качестве гостя. Предоставление диалогового окна для немедленного входа в систему может упростить процесс оформления заказа для постоянных клиентов.
- Пользователь инициирует действие, например, нажимает кнопку «Оформить заказ» в процессе совершения покупок.
- На вашем сайте вызывается метод
navigator.credentials.get()сuiMode: "immediate". - Если учетные данные существуют, пользователь выбирает один из них для завершения входа в систему.
- Если учетные данные отсутствуют, браузер выдает ошибку и не отображает диалоговое окно входа в систему. Пользовательский интерфейс остается неизменным, и вы можете перенаправить пользователя на существующий экран оформления заказа, где могут быть доступны другие варианты входа или форма для оформления заказа без регистрации.
Ознакомьтесь с мерами по обеспечению конфиденциальности и безопасности.
Браузер принимает важные меры для защиты конфиденциальности пользователей:
- Требование к жесту пользователя : Для предотвращения скрытого запроса необходимо инициировать вызов API с помощью жеста пользователя, например, щелчка мышью. Вызов не расходует активацию.
- Ограничения режима инкогнито : запросы в режиме инкогнито или приватных сессиях всегда вызывают
NotAllowedError. - Нет списков разрешенных запросов : запросы с непустым списком
allowCredentialsвызываютNotAllowedError, чтобы предотвратить отслеживание между сессиями. - Программная отмена невозможна : вы не можете использовать параметр
signalдля программного закрытия диалогового окна немедленного входа в систему.