2010-10-13 3 views
1

J'ai créé une classe BasicMembershipProvider qui hérite de MembershipProvider. Une fois implémentée, l'objet ValidateUser n'est pas appelé. Ceci est ma configuration:ASP.NET FormsAuthentication n'utilise pas la valeur par défaut MembershipProvider

web.config

<membership defaultProvider="BasicMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="BasicMembershipProvider" type="MyMVCProject.Providers.BasicMembershipProvider"/> 
    </providers> 
</membership> 

BasicMembershipProvider.cs

public class BasicMembershipProvider : MembershipProvider 
{  
    //THIS FUNCTION NEVER GETS CALLED 
    public override bool ValidateUser(string email, string password) 
    { 
     //Do custom checks. 
    } 
} 

Contrôleur

FormsAuthentication.Authenticate(model.Email, model.Password) 

Est-ce la voie à suivre sur le remplacement du MembershipProvider avec mon propre logique d'adhésion? Si oui, pourquoi la fonction surchargée ValidateUser n'est pas appelée chaque fois que j'appelle FormsAuthentication.Authenticate()?

Répondre

7

AFAIK le FormsAuthentication.Authenticate n'utilise pas la méthode Membership.Validate. Vous devez appeler le Membership.Validate manuellement.

From MSDN

La méthode Authentifier vérifie les informations d'identification d'utilisateur qui sont stockés dans la section des informations d'identification du fichier de configuration de l'application. Vous pouvez également utiliser l'appartenance ASP.NET pour stocker les informations d'identification de l'utilisateur et appeler ValidateUser pour vérifier les informations d'identification.

+1

+1 En effet. Ce n'est pas le cas, ce qui est absolument ridicule. Comme le reste de FormsAuthentication. – Aliostad

+0

@Aliostad I LOL'd à la partie sur 'FormsAuthentication' étant ridicule. Alors je me souviens que c'est, en fait, horrible. Et que je suis coincé en l'utilisant :( – Yuck

Questions connexes