我正在尝试将ASP.NET表单身份验证服务与MySQL连接器版本6.3.2一起使用。我能够使用明文密码使其工作,但无法获得散列密码。这是我的machine.config文件的片段
<system.web>
<membership defaultProvider="MySQLMembershipProvider">
<providers>
<add name="MySQLMembershipProvider"
type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.3.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
autogenerateschema="true"
connectionStringName="LocalMySqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="true"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="1"
passwordAttemptWindow="10"
passwordStrengthRegularExpression="" />
</providers>
</membership>
</system.web>
我正在使用MembershipProvider类的ValidateUser方法来执行身份验证。如果行passwordFormat="Hashed"
更改为passwordFormat="Clear"
,则用户将进行身份验证。更改machine.config文件中的设置后,我删除所有用户并重新创建帐户。我检查了aspnet表的内容,密码被正确存储为哈希 - 只是无法验证。
答案 0 :(得分:4)
看起来我不是唯一注意到这个错误的人:http://forums.mysql.com/read.php?38,368612,372250。通过将以下内容添加到web.config:
轻松修复<system.web>
<machineKey validationKey="AutoGenerate" validation="SHA1" />
</system.web>