Sauvegarde de mot de passe
Sauvegardez les identifiants dans le trousseau système en toute sécurité 🔐
Le plugin Capacitor Autofill Save Password fournit des fonctionnalités de sauvegarde et de remplissage automatique de mot de passe pour les applications Capacitor. Ce plugin s’intègre avec la gestion des identifiants au niveau du système pour offrir des expériences d’authentification transparentes avec stockage et récupération sécurisés des mots de passe.
Sauvegarde de mot de passe
Sauvegardez les identifiants dans le trousseau système en toute sécurité 🔐
Intégration du remplissage automatique
Support du remplissage automatique de mot de passe au niveau du système 🗝️
Multi-plateforme
Support iOS avec développement Android en cours 📱
Association de domaine
Domaines associés pour une authentification transparente ❤️
npm install @capgo/capacitor-autofill-save-passwordnpx cap syncConfigurez les domaines associés dans votre compte Apple Developer et ajoutez-les à votre fichier App.entitlements :
<?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>Ajoutez un fichier .well-known/apple-app-site-association à votre site web :
{ "webcredentials": { "apps": [ "TEAMID.com.yourcompany.yourapp" ] }}promptDialog(options) - Sauvegarder le mot de passe dans le trousseau systèmereadPassword() - Lire le mot de passe sauvegardé depuis le trousseauimport { SavePassword } from '@capgo/capacitor-autofill-save-password';
// Sauvegarder le mot de passe après une connexion réussieasync function login(username: string, password: string) { try { // Effectuez votre logique de connexion ici const loginSuccess = await performLogin(username, password);
if (loginSuccess) { // Demander à l'utilisateur de sauvegarder le mot de passe await SavePassword.promptDialog({ username: username, password: password, url: 'https://yourdomain.com' // iOS uniquement });
console.log('Mot de passe sauvegardé avec succès'); } } catch (error) { console.error('Échec de la sauvegarde du mot de passe:', error); }}
// Lire le mot de passe sauvegardé pour le remplissage automatiqueasync function loadSavedCredentials() { try { const credentials = await SavePassword.readPassword();
if (credentials.username && credentials.password) { console.log('Identifiants sauvegardés trouvés'); // Pré-remplir le formulaire de connexion return { username: credentials.username, password: credentials.password }; } } catch (error) { console.error('Échec de la lecture du mot de passe sauvegardé:', error); }
return null;}Pour le support Android futur, la configuration suivante sera requise :
Ajoutez à android/app/build.gradle :
apply plugin: 'com.google.gms.google-services'Ajoutez à 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>Ajoutez google-services.json à votre projet Android.
Sauvegarde les identifiants de l’utilisateur dans le trousseau système.
interface SavePasswordOptions { username: string; password: string; url?: string; // iOS uniquement - URL du domaine associé}Récupère les identifiants sauvegardés depuis le trousseau système.
interface SavedCredentials { username: string; password: string;}import { SavePassword } from '@capgo/capacitor-autofill-save-password';
class AuthService { async login(username: string, password: string) { try { // Authentification avec votre backend const response = await fetch('/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }) });
if (response.ok) { // Proposer de sauvegarder les identifiants await this.offerToSavePassword(username, password); return true; } } catch (error) { console.error('Échec de la connexion:', error); } return false; }
private async offerToSavePassword(username: string, password: string) { try { await SavePassword.promptDialog({ username, password, url: 'https://yourdomain.com' }); } catch (error) { // L'utilisateur a refusé de sauvegarder ou une erreur s'est produite console.log('Mot de passe non sauvegardé:', error); } }
async loadSavedCredentials() { try { return await SavePassword.readPassword(); } catch (error) { console.log('Aucun identifiant sauvegardé trouvé'); return null; } }}Consultez la documentation complète pour des guides d’implémentation détaillés et des modèles d’intégration avancés.