BlogPostPage

Retour aux articles

Blazor et Supabase, Authentification - Part 2

Blazor et Supabase, Authentification - Part 2

English version here

Part 1 : Base de données
Part 2 : Authentification
Part 3 : Temps réel


Introduction:

Un des atouts de Supabase, c'est de gérer tout ce qui concerne l'authentification ainsi que les autorisations de votre application.
Plusieurs providers sont disponibles comme le mail/mot de passe mais également la pluspart des providers du marché (SAML, Microsoft, Facebook, Google, Apple, Linkedin, ...)

La mise en place dans une application Blazor n'était pas très simple car il y a peu de documentation sur ce sujet.
C'est la raison pour laquelle j'ai décidé de créer ces articles.
Certaines classes C# proviennent d'anciens projets persos ou de classes découvertes sur GitHub. Mais pour vous, ce sera très simple à implémenter !

Comme précédemment, ne pas oublier de cloner ou parcourir le projet GitHub de référence : https://github.com/phnogues/Blazor.Supabase/

image

Le type d'authentification que j'ai choisi sera l'utilisation d'un Token JWT.
Il y a de nombreuses possibilités que je décrirai pas ici. N'hésitez pas à me laisser un commentaire pour en savoir plus.

C'est parti !

Mise en place:

Ici, je ne vais pas copier le code, ce serait trop difficile à digérer, prenez le temps de parcourir le projet GitHub.

Prérequis:

  • Avoir suivi la partie 1 sur la mise en place de Supabase

  • Vérifier que les informations présentes dans votre appsettings.json soient bonnes.

    • ValidIssuser : l'url de votre api supabase suivie de /auth/v1
    • ValidAudience : authenticated
    • JwtSecret : votre clé, qui se trouve dans Project settings / API / JWT Secret
  • Depuis Supabase, trois pages seront importantes :

    • La base de données des utilisateurs : Authentication
    • Le paramétrage des providers : Authentication / Providers
    • Le paramétrage de l'authentification : Project Settings / Authentication

Dans le code je vous invite à regarder les classes suivantes :

  • Program.cs
// Authenticated services
builder.Services.AddTransient<AuthService>();
builder.Services.AddTransient<UserService>();
builder.Services.AddScoped<AuthenticationStateProvider, SupabaseAuthenticationStateProvider>();
builder.Services.AddSingleton<IAuthorizationMiddlewareResultHandler, BlazorAuthorizationMiddlewareResultHandler>();
builder.Services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
  • SupabaseAuthenticationStateProvider : Ce sera notre gestionnaire d'état pour le Token JWT
  • AuthService : Cette classe permettera de se logger, s'enregistrer, mettre à jour son compte ou son mot de passe. Le token sera persister dans le local storage.
    • Dans la méthode RegisterAsync, on pourra ajouter autant de données additionnelles que l'on souhaite, comme le prénom ou le nom.
  • Pour l'envoi de mail, je vous invite à utiliser un SMTP (moi j'utilise Brevo), car celui de Supabase est très limité dans la version gratuite.
  • UserService : Récupére l'utilisateur connecté via son Token JWT
  • Routes.razor : Utiliser une balise CascadingAuthenticationState

Part 3 → https://pierrehenri.fr/fr/blog/blazor-et-supabase-temps-reel-part-3

Commentaires (0)

Aucun commentaire pour le moment. Soyez le premier à commenter !

Laisser un commentaire

Votre email ne sera pas publié.
An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.