Asp.net-Membership

自動生成的密鑰不支持散列或加密密碼

  • March 12, 2012

我創建了一個會員提供程序並將我的 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 配置的安全頁面時,都會出現以下錯誤:

自動生成的密鑰不支持散列或加密密碼

在我的數據庫中,我為我的 PK 使用了 Identity。我不知道這是不是問題。但如果是,我該如何解決?我不想更改身份值。

謝謝。

這是因為您正在對密碼進行雜湊處理,但尚未在 web.config 中設置特定密鑰。這篇MSDN 文章中有一個“密鑰生成器”片段,執行它兩次並將它們推到你的 web.config 中:

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

那應該可以解決您的問題。之所以這樣,是因為否則您可以將您的會員數據庫/應用程序帶到另一台機器上,並且您的密碼都不起作用,因為自動生成的機器密鑰會有所不同:-)

引用自:https://stackoverflow.com/questions/546861