从3.5升级到ASP.net 4.0后登录失败

时间:2010-04-29 16:54:05

标签: .net-4.0 upgrade membership

我无法使用.net 4.0版本的应用使用任何会员帐户登录。它失败就像密码错误一样,FailedPasswordAttemptCount在my_aspnet_membership表中递增。 (我正在使用mysql会员提供商的会员资格。)

我可以创建新用户。它们出现在数据库中。但是我无法使用新的用户凭据登录(是的,IsApproved是1)。

一个线索是,对于使用asp.net 4.0版本创建的用户,数据库中的散列密码更长,例如3lwRden4e4Cm + cWVY / spa8oC3XGiKyQ2UWs5fxQ5l7g =,旧的.net 3.5都是+ JQf1EcttK + 3fZiFpbBANKVa92c = 。

当使用.net 3.5版本连接到同一个数据库时,我仍然可以登录,但仅限于旧帐户,而不是使用.net 4.0版本创建的新帐户。 4.0版本无法登录任何帐户。

我尝试在我的测试系统上删除整个数据库,然后在第一次运行时自动创建成员资格表,但它仍然是相同的,可以创建用户,但无法登录。

2 个答案:

答案 0 :(得分:13)

请参阅:HERE

.net 4.0的默认哈希算法已更改。默认哈希算法现在是HMACSHA256。早期版本的ASP.NET使用较旧的HMACSHA1算法。

要将ASP.NET 4 Web应用程序配置为使用较旧的HMACSHA1算法,请将以下设置添加到Web.config文件的system.web部分:

<machineKey validation="SHA1"/>

答案 1 :(得分:2)

我遇到了完全相同的问题。我在3.5和4.0中都有我的Web应用程序,只有“旧”帐户在3.5实例上工作。

希望有人有答案!

更新:

我将passwordFormat更改为Clear,然后我就可以创建一个新用户并使用4.0应用程序登录。看起来密码被散列的方式发生了变化。

更新2:

我能够让其中一个“旧”帐户工作。通过对passwordFormat的上述更改,我将my_aspnet_membership中的PasswordFormat列更改为0并在同一个表中手动设置密码。虽然这是令人费解和混乱的,但它让帐户得到它。我将尝试运行密码重置,看看是否能修复损坏的帐户。