Dipublikasikan: 12 Mei 2026
Mode UI langsung untuk login adalah kemampuan web yang dirancang untuk menyederhanakan alur login. Fitur ini memungkinkan Anda menawarkan kunci sandi dan sandi terkelola secara proaktif langsung kepada pengguna saat mereka mencapai momen login, seperti mengklik tombol Login atau Checkout.
Abstrak
Mode UI langsung menyediakan mode yang akan segera gagal jika tidak ada kredensial yang tersedia secara lokal. Perilaku ini mencerminkan API preferImmediatelyAvailableCredentials
yang ditemukan di platform seluler seperti Android dan iOS. Jika kredensial ada, browser akan menampilkan dialog login langsung kepada pengguna. Jika tidak, promise akan ditolak
secara diam-diam, sehingga Anda dapat menyediakan metode login alternatif, misalnya, formulir login, tanpa mengganggu pengalaman pengguna.
Mulai Mei 2026, Chrome adalah satu-satunya browser yang mendukung mode UI langsung.
Memeriksa prasyarat
Untuk menggunakan mode UI langsung, pengguna harus sudah memiliki kredensial yang memenuhi syarat yang tersedia secara lokal di perangkat mereka. Di Chrome, kredensial ini mencakup:
- Kunci sandi yang disimpan di penyedia kunci sandi seperti Pengelola Sandi Google, Windows Hello, atau Rantai Kunci iCloud.
- Sandi yang disimpan di Pengelola Sandi Google.
Jika tidak ada kredensial lokal, API akan menolak permintaan tanpa menampilkan dialog login langsung.
Mendeteksi dukungan fitur
Sebelum memanggil mode UI langsung, verifikasi apakah browser mendukung kemampuan
immediateGet menggunakan metode
PublicKeyCredential.getClientCapabilities(). Jika tidak didukung, kembali ke metode login yang ada, seperti formulir email dan sandi, verifikasi nomor telepon, atau login dengan akun media sosial.
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);
}
}
Untuk dukungan browser yang lebih luas, gunakan polyfill yang tersedia di repositori GitHub WebAuthn Polyfills.
Meminta kredensial
Untuk memicu alur login langsung, panggil navigator.credentials.get() dengan kolom
uiMode yang ditetapkan ke 'immediate'.
Dengan menyertakan password: true dalam permintaan Anda, pengguna dapat memanfaatkan pengalaman ini jika browser mendukung kredensial
sandi.
// 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();
}
}
});
Anda harus menangani NotAllowedError dalam blok catch untuk memberikan pengalaman login penggantian.
Menangani alur login
Anda dapat menerapkan mode UI langsung untuk dua skenario utama. Untuk panduan UX dan anti-pola lainnya yang harus dihindari, lihat Pola UX untuk mode UI Langsung.
Login dengan tombol
Sediakan tombol login khusus yang menawarkan pengalaman yang bersih tanpa perintah yang tidak terduga.
- Pengguna mengklik tombol Login.
- Situs Anda memanggil
navigator.credentials.get()denganuiMode: "immediate". - Browser akan memeriksa kredensial lokal.
- Jika browser menemukan kredensial, browser akan menampilkan dialog login langsung bagi pengguna untuk memilih akun.
- Jika browser tidak menemukan kredensial atau pengguna menutup dialog login langsung, browser akan menampilkan
NotAllowedError. - Jika
NotAllowedErrorditampilkan, situs Anda akan melanjutkan dengan halaman login standar.
Login sebelum checkout
Tawarkan kredensial secara proaktif sebelum pengguna melakukan tindakan yang akan diuntungkan dari autentikasi, seperti memulai alur checkout di etalase toko online.
Dalam e-commerce, pengguna tamu sering kali memilih antara login ke akun yang ada atau checkout sebagai tamu. Menyediakan dialog login langsung dapat menyederhanakan proses checkout untuk pelanggan yang kembali.
- Pengguna memulai tindakan, seperti mengklik tombol Checkout selama alur belanja.
- Situs Anda memanggil
navigator.credentials.get()denganuiMode: "immediate". - Jika kredensial ada, pengguna memilih salah satunya untuk menyelesaikan proses login.
- Jika kredensial tidak ada, browser akan menampilkan error dan tidak menampilkan dialog login langsung. Pengalaman pengguna tetap tidak berubah, dan Anda dapat mengarahkan pengguna ke layar checkout yang ada, yang mungkin menyediakan opsi login lain atau formulir checkout tamu.
Meninjau langkah-langkah privasi dan keamanan
Browser menerapkan langkah-langkah penting untuk melindungi privasi pengguna:
- Persyaratan gestur pengguna: Anda harus memulai panggilan API dengan gestur pengguna, seperti klik, untuk mencegah penyelidikan diam-diam. Panggilan tidak menggunakan aktivasi.
- Batasan mode samaran: Permintaan dalam sesi samaran atau pribadi selalu memunculkan
NotAllowedError. - Tidak ada daftar yang diizinkan: Permintaan dengan daftar
allowCredentialsyang tidak kosong akan memunculkanNotAllowedErroruntuk mencegah pelacakan lintas sesi. - Tidak ada pembatalan terprogram: Anda tidak dapat menggunakan parameter
signaluntuk menutup dialog login langsung secara terprogram.