ASP.NET MVC + MySql Membership Provider, 用户无法登录

4
我一直在尝试使用MySql作为asp.net mvc表单验证的会员提供程序。据我所知,我已经正确配置了一切,并且我可以通过注册操作和asp.net web config站点创建用户。然而,当我尝试使用其中一个用户登录时,它不起作用。它返回一个错误,就像我输入了错误的密码或帐户不存在一样。
我已经在数据库中验证了该帐户确实存在。我按照此处的说明进行了参考:http://blog.tchami.com/post/ASPNET-MVC-2-and-MySQL-Membership-Provider.aspx 这是我的web.config:
<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->

<configuration>
  <connectionStrings>
      <add name="MySQLConn" connectionString="Server=localhost;Database=intereditor;Uid=<user>;Pwd=<password>;"/>
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>

    <authentication mode="Forms">
      <forms 
        loginUrl="~/Account/LogOn" 
        timeout="2880"
        name=".ASPXFORM$"
        path="/"
        requireSSL="false"
        slidingExpiration="true"
        enableCrossAppRedirects="false"
        />
    </authentication>

    <membership defaultProvider="MySqlMembershipProvider">
      <providers>
        <clear/>
        <add name="MySqlMembershipProvider"
      type="MySql.Web.Security.MySQLMembershipProvider,MySql.Web,Version=6.3.4.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d"
        autogenerateschema="true" connectionStringName="MySQLConn"
        enablePasswordRetrieval="false" enablePasswordReset="true"
        requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
        passwordFormat="Hashed" maxInvalidPasswordAttempts="5"
        minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"
        passwordAttemptWindow="10" passwordStrengthRegularExpression=""
        applicationName="/" />
      </providers>
    </membership>

    <profile defaultProvider="MySqlProfileProvider">
      <providers>
        <clear/>
        <add name="MySqlProfileProvider"
        type="MySql.Web.Profile.MySQLProfileProvider,MySql.Web,Version=6.3.4.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d"
        connectionStringName="MySQLConn" applicationName="/" />
      </providers>
    </profile>

    <roleManager enabled="true" defaultProvider="MySqlRoleProvider">
      <providers>
        <clear />
        <add name="MySqlRoleProvider"
        type="MySql.Web.Security.MySQLRoleProvider,MySql.Web,Version=6.3.4.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d"
        connectionStringName="MySQLConn" applicationName="/" />
      </providers>
    </roleManager>
    <pages>
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

请问有人能帮我找出问题所在,以便用户可以登录吗?

更新

在调试会员提供程序代码中的登录过程后,我发现提供程序中存在一个错误。数据库中存储的密码哈希值与基于输入密码生成的哈希值之间存在差异。为了解决我的问题,我将密码格式更改为“加密”,并在web.config中添加了机器密钥。

我仍然有兴趣找出提供程序中哈希格式的问题,并将花费更多时间进行调试。如果我能找出问题,我将制作补丁并提交。


我有同样的问题。感谢您发布到目前为止所找出的内容! - Shane Fulmer
3个回答

5

1

确保用户未被锁定。islocked属性位于sqlmembershipprovider用于提供注册服务的表之一中(不记得确切名称 :()我相当确定这是问题所在,您需要将islocked从true更改为false,以使用该用户的登录凭据进行登录


我在会员表中找到了该列,而且该列已经被设置为0了。 - Jason Miesionczek

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接