ASP.NET FormsAuthentication不使用默认的MembershipProvider

Sha*_*ean 1 asp.net-mvc membership-provider

我创建了一个继承自MembershipProvider的BasicMembershipProvider类,在实现时,不会调用ValidateUser.这是我的设置:

web.config中

<membership defaultProvider="BasicMembershipProvider">
  <providers>
    <clear/>
    <add name="BasicMembershipProvider" type="MyMVCProject.Providers.BasicMembershipProvider"/>
  </providers>
</membership>
Run Code Online (Sandbox Code Playgroud)

BasicMembershipProvider.cs

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

调节器

FormsAuthentication.Authenticate(model.Email, model.Password)
Run Code Online (Sandbox Code Playgroud)

这是用我自己的会员逻辑覆盖MembershipProvider的方法吗?如果是这样,为什么ValidateUser我打电话时不会调用覆盖的函数FormsAuthentication.Authenticate()

Meh*_*hin 7

AFAIK FormsAuthentication.Authenticate不使用Membership.Validate方法.你必须Membership.Validate手动调用.

来自MSDN

Authenticate方法验证存储在应用程序配置文件的凭据部分中的用户凭据.或者,您可以使用ASP.NET成员身份来存储用户凭据并调用ValidateUser来验证凭据.