我正在将现有的ASP.net表单站点转移到MVC 5,我无法使用户身份验证工作。我无法理解我失踪的是什么。我添加了数据库和连接字符串并确保它们正常工作。然后我将以前的web.config的成员资格部分粘贴到新项目中:
<membership defaultProvider="MyProvider" hashAlgorithmType="SHA1">
<providers>
<add name="MyProvider"
connectionStringName="LocalSqlServer"
applicationName="/"
description=""
requiresUniqueEmail="false"
enablePasswordRetrieval="true"
requiresQuestionAndAnswer="false"
passwordFormat="Clear"
minRequiredPasswordLength="4"
minRequiredNonalphanumericCharacters="0"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
当我尝试使用Membership.ValidateUser(user.Username,user.Password)进行身份验证时,它总是返回false。在成员资格上设置一个断点显示它使用“MyProvider”,但我注意到它使用了另一个哈希算法,因此我手动添加了SHA1。至少这是我认为SQL Membership Provider正在使用的。
那我在这里错过了什么?它可能是重要的,因为似乎没有任何作用。我甚至尝试从数据库中插入散列密码,而不是模型(user.Password)中的密码,同时在web.config中使用passwordFormat,而没有任何区别。
欢迎任何建议!会员提供者真的不是我的强者。