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

mrt*_*ndi 11 asp.net-membership

我创建了一个Membership provider并将我的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>
Run Code Online (Sandbox Code Playgroud)

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

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

在我的数据库中,我使用了Identity for PKs.我不知道这是不是问题.但如果是的话,我该如何解决呢?我不想改变身份值.

谢谢.

Ste*_*ins 21

这是因为您正在散列密码但未在web.config中设置特定密钥.这篇MSDN文章中有一个"密钥生成器"代码段,运行两次并将它们推送到web.config中:

<system.web>
    <machineKey  
    validationKey="<blah>"           
    decryptionKey="<blah>"
    validation="SHA1"
    decryption="AES"
    />
Run Code Online (Sandbox Code Playgroud)

这应该可以解决你的问题.这是这样的,因为否则你可以把你的会员数据库/应用程序带到另一台机器上,你的密码都不会起作用,因为自动生成的机器密钥会有所不同:-)

  • 以上链接已损坏,但这是另一个:http://aspnetresources.com/tools/machineKey (5认同)
  • 或者只使用这个在线工具:http://www.developmentnow.com/articles/machinekey_generator.aspx (3认同)