[C# – ASP.NET] ProfileProvider – Ajouter un profil spécifique à son MemberShipProvider

Lorsque vous utilisez un MemberShipProvider, c’est pour sauvegarder des informations sur l’utilisateur, comme son nom d’utilisateur, le mot de passe de connexion, ou encore son adresse mail.

Cependant, il peut vous arriver de devoir rajouter des propriétés spécifiques à cet utilisateur. Nous verrons par exemple, comment rajouter le numéro de téléphone de l’utilisateur puis son intégration dans le formulaire d’inscription.

Au programme donc :

  • Génération d’un membership.
  • Configuration du Web.config.
  • Ajout d’un champ “Téléphone” dans un formulaire d’inscription.

Le MemberShipProvider n’est pas facile à maitriser, mais cet article vous permettra de mieux comprendre le principe.

Voici déjà une petite astuce pour générer un MemberShipProvider en ligne de commande :

En passant par cmd:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe

ou alors vous allez directement chercher ce fichier via l’explorateur 🙂

Un assistant se lancera pour la configuration.

image

 

Une fois créée, la base de données possède un espace spécifique pour rajouter des informations sur l’utilisateur :

image

Le profil peut contenir n’importe quel type d’informations.

1er Etape : Configuration du Web.config

<membership defaultProvider="MyMembershipProvider">
  <providers>
    <add name="MyMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="MyDB" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
  </providers>
</membership>
<profile enabled="true" defaultProvider="MyProfileProvider">
  <providers>
    <add name="MyProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="MyDB" />
  </providers>
  <properties>
    <add name="Phone" type="System.String" />
  </properties>
</profile>

Il faut définir un MembershipProvider faisant référence à une connexionstring contenant les informations sur la base de données.

<connectionStrings>
  <add name="MyDB" connectionString="Data Source=W2K3-DC-SQL;Initial Catalog=MyDBData;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>

Puis définir un ProfileProvider faisant référence à cette même connexionstring et contenant les différents champs spécifiques que vous voulez rajouter. (Vu que je ne cast pas le numéro de téléphone, et que l’on peut mettre 06-10-93-38-19 comme numéro, j’ai mis un type string et je cast par la suite en C#).

2ième Etape : Intégration dans le formulaire d’inscription

Il faut commencer par créer le formulaire, vous trouverez votre bonheur dans la toolbox avec un CreateUserWizard.

Il est facilement optimisable en convertissant en template afin de pouvoir modifier/rajouter des champs.

Une fois un champ  “téléphone” rajouté, il suffit d’instancier l’événement CreatedUser du control CreateUserWizard :

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
 {
     ProfileBase Profile = ProfileBase.Create(CreateUserWizard1.UserName, true);
     var phone = CreateUserWizard2.CreateUserStep.ContentTemplateContainer.FindControl("Phone") as TextBox;
     if (phone != null)
     {  
         Profile["Phone"] = phone.Text;
         Profile.Save();
     }
 }

Et voilà cette événement est appelé une fois l’utilisateur créé, on peut donc lui rajouter une propriété directement.

 

J’espère que cet article vous a permis de mieux comprendre les MemberShipProvider ! On peut vraiment en faire ce que l’on veut.

Publicités

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :