ASP.NET Membership.ValidateUser()始终返回“false”

时间:2014-02-28 14:42:13

标签: c# asp.net membership-provider

这是我的web.config:

<membership defaultProvider="CustomizedMembershipProvider">
  <providers>
    <clear />
    <add name="CustomizedMembershipProvider" 
         connectionStringName="MYbdName" 
         applicationName="/" type="System.Web.Security.SqlMembershipProvider" 
         requiresQuestionAndAnswer="false" 
         passwordFormat="Clear" 
         enablePasswordRetrieval="true" 
         requiresUniqueEmail="true" 
         minRequiredPasswordLength="4" 
         minRequiredNonalphanumericCharacters="0" />
  </providers>
</membership>

我甚至硬编码了用户名和密码:

 bool b = Membership.ValidateUser("user@mail.com", "pass123");

当我在数据库上执行选择时,我会得到正确的用户。

用户isAproved = true

用户isLockedout = 0

2 个答案:

答案 0 :(得分:5)

配置ASP.NET 2.0成员资格和其他提供程序时,需要设置applicationName属性。在你的web.config中,它丢失了:

<membership defaultProvider="CustomizedMembershipProvider">
  <providers>
    <clear />
    <add name="CustomizedMembershipProvider" 
         connectionStringName="MYbdName" 
         applicationName="/"   <----------   Missing applicationName
         type="System.Web.Security.SqlMembershipProvider" 
         requiresQuestionAndAnswer="false" 
         passwordFormat="Clear" 
         enablePasswordRetrieval="true" 
         requiresUniqueEmail="true" 
         minRequiredPasswordLength="4" 
         minRequiredNonalphanumericCharacters="0" /> 
  </providers>
</membership>

您可以尝试在此处获取值

public bool Login(string userName, string password)
{
    var provider = Membership.Provider;
    string name = provider.ApplicationName; // Get the application name here

    return Membership.ValidateUser(userName, password);
}

或打开aspnet_Users数据库中的aspnet_ApplicationsASPNETDB表,找出在开发过程中创建用户和其他数据时使用的应用程序名称(查看{{ 1}}表来解决这个问题。)

然后在web.cofig中正确设置属性:

aspnet_Application

有关详细信息,请阅读Scott-Gu博客中的article

答案 1 :(得分:1)

对于遇到此问题的其他人,还要确保在创建/保存用户密码时使用的项目中使用相同的计算机密钥:

<machineKey validationKey="x" decryptionKey="x" validation="SHA1" decryption="AES" />

更多信息: https://msdn.microsoft.com/en-us/library/ff649308.aspx