🛢️Parcours Fioul GroupéFlutter · Chapitre 19
Accueil › Flutter › Chapitre 19
Chapitre 19 / 19 · dernier · 🛡️

Authentification avec JWT

Connecter l'appli à la sécurité de l'API : se connecter, stocker le jeton en sécurité, l'envoyer à chaque requête protégée, et gérer l'état de connexion. Dernier chapitre du parcours.

1 Étape

Se connecter

Un écran login envoie email/mot de passe à /api/auth/login et reçoit un JWT.

Future<String> login(String email, String mdp) async {
  final r = await http.post(Uri.parse('$_base/auth/login'),
    headers: {'Content-Type': 'application/json'},
    body: jsonEncode({'email': email, 'motDePasse': mdp}));
  return jsonDecode(r.body)['token'];
}
2 Étape

Stocker le jeton en sécurité

On stocke le JWT avec flutter_secure_storage (chiffré par l'OS), jamais en clair dans un fichier ordinaire.

await storage.write(key: 'jwt', value: token);
4 Étape

L'état de connexion

Un AuthProvider (ChangeNotifier) expose l'utilisateur connecté ; l'UI adapte l'affichage (bouton « ouvrir une campagne » réservé au coordinateur, écran login si non connecté).

🛢️ Sur le projet Fioul Groupé

Implémente login/inscription, stocke le JWT (secure storage), injecte l'en-tête dans CampagneService, et conditionne les actions selon le rôle. L'appli parle maintenant à l'API sécurisée — la boucle Mongo → Spring → Flutter est bouclée.

🎉 Parcours Flutter terminé

Des widgets de base jusqu'à une appli mobile connectée, sécurisée et publiable, tu as construit le client du projet Fioul Groupé. Les trois technos se rejoignent : le produit est complet. Reste à le versionner et le présenter — voir le parcours Forge et le guide pas à pas.

À retenir
  • Login → JWT ; stockage chiffré (flutter_secure_storage).
  • En-tête Authorization: Bearer sur les requêtes protégées.
  • État de connexion via un provider ; le serveur reste l'autorité des rôles.
← Chapitre 18