vendredi 3 avril 2020

ASP.NET DB for ASP.NET Core Indentity

Pour gérer ma communauté d'utilisateurs, c'est  à dire gérer les données des utilisateurs qui vont venir s'identifier au sein de mon application Web ASP.NET Core, j'ai besoin de mieux connaitre l'Identity Data Management.

Le Scaffolding et les Projects Template m'ont déjà appris un tas de choses mais maintenant je souhaite aller plus loin. Afin d'avoir un vrai système de gestion des utilisateurs.

Structure de la Base de Données AspNet

Voici les tables qui sont créés par défaut :


AspNetDB - Tables créés par défaut
AspNetDB - Tables créés par défaut
Dans la table AspNetUsers à quoi sert le champ LockoutEnable ?

Docs  .NET API Browser  Microsoft.AspNetCore.Identity  IdentityUser

C'est tout un bordel cela ne vous est jamais arrivé de devoir vous connecter sur site Microsoft un peu tuchy si vous ratez votre connexion le site vous répondez que vous ne pouvez plus vous connecter et qu'il faudra recommencer dans 30 minutes et si vous ratez encore il vous faudra attendre une heure et bien c'est la gestion de tout cela.

En fait cela sert à protéger votre site des robots ou de certains qui voudrait attaquer votre site par déni de service.

User IsEnable False

Si je souhaite pouvoir disabler mon utilisateur, c'est arrivé parois. Un utilisateur que ne veut plus payer son abonnement mais qui continue d'utiliser la plateforme.

Et bien c'est assez différent du MemberShip Provider où tout ceci était déjà prévu. Avec ASP.NET Core vous pouvez l'ajouter "à la main" dans

public class ApplicationUser : IdentityUser
{

    public bool? IsEnabled { get; set; } 

Dans : \Areas\Identity\Pages\Account\Register.cshtml.cs

var user = new ApplicationUser
{
    ...
    IsEnabled = true
};


Et dans \Areas\Identity\Pages\Account\Login.cshtml.cs

public async Task<IActionResult> OnPostAsync( string returnUrl = null )
{
    returnUrl = returnUrl ?? Url.Content( "~/" );

    if ( ModelState.IsValid )
    {
         // Manage User IsEnable
         var user = _userManager.FindByEmailAsync( Input.Email ).Result;
     if ( user.IsEnabled.HasValue && user.IsEnabled == false )
     {
           _logger.LogWarning( "User account has been disabled by admin." );
          return RedirectToPage( "./Lockout" );
     }


Si l'utilisateur est Disablé, il sera redirigé vers la page Lockout le message ne sera pas très explicite pour lui mais il faudrait scaffolder la page Lockout pour délivrer un message plus explicite ... si vous avez le temps ...

Mais du coup, si je disable mon utilisateur, il ne pourra plus venir dans la plateforme et donc ne pourra plus supprimer ses données personnelles ce qui est quelque peu en désaccord avec les nouvelles dispositions sur la gestion des données personnelles.

Et je pense que c'est la raison pour laquelle ce mécanisme qui était intégré ne l'est plus.

To Be Continued!

Aucun commentaire:

Publier un commentaire