Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

Custom membership provider minimaliste appelant une fonction métier

8 Novembre 2006 , Rédigé par Hugues MEUNIER Publié dans #.NET

  • Nous allons voir comment mettre en place une authentification pour un site WEB en utilisant les outils Microsoft et en customisant un MembershipProvider.

Par défaut, les fonctions d'authentification et de gestion des rôles peuvent être délèguer au provider par défaut (AspnetMembership provider). Celui-ci va lire les données dans une base SQL. Cette manière de faire pose des problèmes d'architecture et de sécurité car : la couche présentation accède directement à la couche DATA.

Nous allons donc construire notre propre fournisseur pour l'authentification qui respectera les règles habituelles.

Pour cela :

  • Identifier la fonction métier qui réalise l'authentification : ici ce sera l'interface IOperations via la fonction authentifie
System.Int64  op.authentifie(string username, string password);
  • Créer une classe (par exemple MonMembershipProvider qui dérive de la classe MembershipProvider)

 public class MonMembershipProvider : MembershipProvider

Il faut ensuite surcharger les nombreuses méthodes et propriétés.

  • Au minimum, il faut implémenter :
    • la propriété Name (nom du provider)

public override string Name

{

get

{

return "MonMembershipProvider";

}

}

    • la méthode ValidateUser
        • public override bool ValidateUser(string username, string password)
        • {
        • IOperations op = new Operations();
        • Int64 res = op.authentifie(username, password);
        • if (res != 0)
        • {
        • HttpContext.Current.Session.Add("idclient", res.ToString());
        • return true;
        • }
        • else
        • return false;
      • Modifier le fichier Web.config

<authentication mode="Forms">

<forms loginUrl="login.aspx" timeout="20">

</forms>

</authentication>

<authorization>

<deny users="?" />

</authorization>

<membership defaultProvider="MonMembershipProvider">

<providers>

<add name="MonMembershipProvider"

passwordFormat="Hashed"

minRequiredPasswordLength="2"

minRequiredNonalphanumericCharacters="0"

requiresQuestionAndAnswer="False"

requiresUniqueEmail="True"

type="bankdemoAJAX.MonMembershipProvider"/>

</providers>

</membership>

  • Il ne reste plus qu'à faire glisser sur la page login.aspx un contrôle "Login" et modifier la propriété membershipProvider à MonMembershipProvider.
  • Voilà c'est fini. Pour aller plus loin, il est possible de surcharger CreateUser, ChangePassword ...

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article