asp.net-membership - 自动生成的 key 不支持散列或加密的密码

标签 asp.net-membership

我创建了一个成员(member)服务提供商并将我的 web.config 更改为

<membership defaultProvider="MyMembershipProvider">
   <providers>
     <clear/>
     <add name="MyMembershipProvider"
          type="Khafan.Providers.SqlMembershipProvider"
          connectionStringName="KhafanConnectionString"  
          maxInvalidPasswordAttempts="5"             
          passwordAttemptWindow="10"
          minRequiredNonalphanumericCharacters="0"
          minRequiredPasswordLength="4"
          passwordStrengthRegularExpression=""
          passwordFormat="Hashed"
          enablePasswordReset="true"
          enablePasswordRetrieval="false"             
          requiresQuestionAndAnswer="false"
          requiresUniqueEmail="true" />
   </providers>
 </membership>

但是现在,每当我尝试浏览到 ASP.Net 配置的安全页面时,都会出现以下错误:

自动生成的 key 不支持散列或加密的密码

在我的数据库中,我为我的 PK 使用了 Identity。我不知道这是不是问题。但如果是,我该如何解决?我不想更改身份值。

谢谢。

最佳答案

这是因为您正在散列密码,但尚未在 web.config 中设置特定键。此 MSDN article 中有一个“ key 生成器”片段, 运行两次并将它们推送到您的 web.config 中:

<system.web>
    <machineKey  
    validationKey="<blah>"           
    decryptionKey="<blah>"
    validation="SHA1"
    decryption="AES"
    />

这应该让你解决问题。就像这样,否则你可以将你的成员(member)数据库/应用程序带到另一台机器上,你的密码都不起作用,因为自动生成的机器 key 会不同:-)

关于asp.net-membership - 自动生成的 key 不支持散列或加密的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/546861/

相关文章:

c# - Membership.GetUser(),无法连接到 SQL Server 数据库

asp.net - 获取特定的成员(member)资格提供者

asp.net 成员(member) : Extending Role membership?

c# - 区域特定登录页面

c# - ASP.NET SqlMembership Provider 允许多个用户同名

asp.net - 如何分配Profile值?

c# - 向 Active Directory 中的多个 OU 进行身份验证

.net - 从对象模型而不是数据库获取 FailedPasswordAttemptCount 的值

sql-server - ASP.NET 成员资格错误

asp.net - 使用sqlite或其他提供程序的asp.net成员资格?