Penyimpanan kata sandi
Simpan kredensial ke keychain sistem dengan aman š
Plugin Capacitor Autofill Save Password menyediakan fungsi penyimpanan dan autofill kata sandi untuk aplikasi Capacitor. Plugin ini terintegrasi dengan manajemen kredensial tingkat sistem untuk menawarkan pengalaman autentikasi yang mulus dengan penyimpanan dan pengambilan kata sandi yang aman.
Penyimpanan kata sandi
Simpan kredensial ke keychain sistem dengan aman š
Integrasi autofill
Dukungan autofill kata sandi tingkat sistem šļø
Lintas platform
Dukungan iOS dengan pengembangan Android sedang berlangsung š±
Asosiasi domain
Associated domains untuk autentikasi yang mulus ā¤ļø
npm install @capgo/capacitor-autofill-save-passwordnpx cap syncKonfigurasi associated domains di akun Apple Developer Anda dan tambahkan ke file App.entitlements Anda:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>com.apple.developer.associated-domains</key> <array> <string>webcredentials:yourdomain.com</string> <string>webcredentials:www.yourdomain.com</string> </array></dict></plist>Tambahkan file .well-known/apple-app-site-association ke situs web Anda:
{ "webcredentials": { "apps": [ "TEAMID.com.yourcompany.yourapp" ] }}promptDialog(options) - Simpan kata sandi ke keychain sistemreadPassword() - Baca kata sandi yang disimpan dari keychainimport { SavePassword } from '@capgo/capacitor-autofill-save-password';
// Save password after successful loginasync function login(username: string, password: string) { try { // Perform your login logic here const loginSuccess = await performLogin(username, password);
if (loginSuccess) { // Prompt user to save password await SavePassword.promptDialog({ username: username, password: password, url: 'https://yourdomain.com' // iOS only });
console.log('Password saved successfully'); } } catch (error) { console.error('Failed to save password:', error); }}
// Read saved password for autofillasync function loadSavedCredentials() { try { const credentials = await SavePassword.readPassword();
if (credentials.username && credentials.password) { console.log('Found saved credentials'); // Pre-fill login form return { username: credentials.username, password: credentials.password }; } } catch (error) { console.error('Failed to read saved password:', error); }
return null;}Untuk dukungan Android di masa depan, konfigurasi berikut akan diperlukan:
Tambahkan ke android/app/build.gradle:
apply plugin: 'com.google.gms.google-services'Tambahkan ke android/app/src/main/res/values/strings.xml:
<resources> <string name="asset_statements"> [{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "web", "site": "https://yourdomain.com" } }] </string></resources>Tambahkan google-services.json ke proyek Android Anda.
Menyimpan kredensial pengguna ke keychain sistem.
interface SavePasswordOptions { username: string; password: string; url?: string; // iOS only - associated domain URL}Mengambil kredensial yang disimpan dari keychain sistem.
interface SavedCredentials { username: string; password: string;}import { SavePassword } from '@capgo/capacitor-autofill-save-password';
class AuthService { async login(username: string, password: string) { try { // Authenticate with your backend const response = await fetch('/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }) });
if (response.ok) { // Offer to save credentials await this.offerToSavePassword(username, password); return true; } } catch (error) { console.error('Login failed:', error); } return false; }
private async offerToSavePassword(username: string, password: string) { try { await SavePassword.promptDialog({ username, password, url: 'https://yourdomain.com' }); } catch (error) { // User declined to save or error occurred console.log('Password not saved:', error); } }
async loadSavedCredentials() { try { return await SavePassword.readPassword(); } catch (error) { console.log('No saved credentials found'); return null; } }}Periksa dokumentasi lengkap untuk panduan implementasi terperinci dan pola integrasi lanjutan.