2010-10-13 1 views
1

Я создал класс BasicMembershipProvider, который наследуется от MemberhipProvider, когда он реализован, ValidateUser не вызывается. Это моя установка:ASP.NET FormsAuthentication не использует default 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. 
    } 
} 

Контроллер

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

ли это путь идти о перекрывая MembershipProvider с моим собственным логика членства? Если это так, почему не вызывает вызываемую функцию ValidateUser всякий раз, когда я звоню FormsAuthentication.Authenticate()?

ответ

7

AFAIK FormsAuthentication.Authenticate не используется Membership.Validate способ. Вы должны вызвать Membership.Validate вручную.

From MSDN

Метод Аутентифицировать проверяет учетные данные, которые хранятся в разделе мандатной файла конфигурации приложения. Кроме того, вы можете использовать членство ASP.NET для хранения учетных данных пользователя и вызвать ValidateUser для проверки учетных данных.

+1

+1 Действительно. Это не так, это абсолютно смешно. Как и остальные FormsAuthentication. – Aliostad

+0

@Aliostad I LOL'd в части о 'FormsAuthentication' нелепо. Тогда я помню, что это действительно ужасно. И что я застрял, используя его :( – Yuck