Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Membership.ValidateUser方法如何访问数据库?_C#_Asp.net Mvc_Asp.net Membership_Login Control - Fatal编程技术网

C# Membership.ValidateUser方法如何访问数据库?

C# Membership.ValidateUser方法如何访问数据库?,c#,asp.net-mvc,asp.net-membership,login-control,C#,Asp.net Mvc,Asp.net Membership,Login Control,在MVC项目开始时,我想构建一个成员资格系统,并使用membership.ValidateUser方法验证凭据。然而,我不明白这个方法如何访问我的数据库,检查我的电子邮件和密码信息 [HttpPost] [ActionName("Login")] public ActionResult Login(LoginModel loginModel) { if (Membership.ValidateUser(loginModel.Email, loginModel.Password))

在MVC项目开始时,我想构建一个成员资格系统,并使用membership.ValidateUser方法验证凭据。然而,我不明白这个方法如何访问我的数据库,检查我的电子邮件和密码信息

[HttpPost]
[ActionName("Login")]
public ActionResult Login(LoginModel loginModel)
{
        if (Membership.ValidateUser(loginModel.Email, loginModel.Password))
        {
            FormsAuthentication.SetAuthCookie(loginModel.Email, true);
            return Json(true);
        }

        return new JsonNetResult() 
        { Data = new { Error = true, Messages = new[] { new { Message = "Wrong username or password" } } } };
}

它使用Web.config文件中指定的
成员身份提供程序
来验证用户。默认情况下,它首先使用Membership.ValidateUser方法检查web.config文件中的Membership defaultProvider,该文件与您提供的名称匹配,如下所示:

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
        <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" 
         connectionStringName="Context" applicationName="myapp" 
         enablePasswordRetrieval="false" enablePasswordReset="true" 
         requiresQuestionAndAnswer="false" requiresUniqueEmail="true" 
         passwordFormat="Hashed" minRequiredPasswordLength="7" 
         minRequiredNonalphanumericCharacters="0" />
      </providers>
    </membership>

上述配置将调用.net framework抽象类MembershipProvider->ValidateUser(抽象方法),其实现位于您在web.config文件中配置的SqlMembershipProvider->ValidateUser方法中[如上所述]。在该方法中,它只需调用数据库的两个存储过程,第一个是aspnet\u Membership\u GetPasswordWithFormat,用于检查应用程序名称、用户名、,上次登录活动日期和当前时间,并基于此进行身份验证,然后调用另一个存储过程,该过程的名称为aspnet_Membership_UpdateUserInfo,这是不言自明的,因为您知道哪个更新aspnet_Membership表包含islockedout、lastlockoutdate、failedpasswordattemptcount等列。。等等


希望这对您有所帮助。

它如何获取我用来保存身份证的数据库或表您的数据存储是在您的连接字符串中定义的,该字符串在您的注释代码中由ConnectionString=“MembershipDb”引用,因此它使用您在名为MembershipDb的web.config中定义的连接字符串中的DB