Dot-Net-4.0

從 3.5 升級到 ASP.net 4.0 後登錄失敗

  • January 8, 2011

我無法使用任何使用 .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版本無法登錄任何賬號。

我嘗試在我的測試系統上刪除整個數據庫,然後在第一次執行時自動創建成員表,但它仍然是一樣的,可以創建使用者,但無法登錄。

見:這裡

.net 4.0 的預設雜湊算法已更改。預設散列算法現在是 HMACSHA256。早期版本的 ASP.NET 使用較舊的 HMACSHA1 算法。

要將 ASP.NET 4 Web 應用程序配置為使用舊的 HMACSHA1 算法,請將以下設置添加到 Web.config 文件的 system.web 部分:

<machineKey validation="SHA1"/>

我現在正在遇到一模一樣的問題。我在 3.5 和 4.0 中都有我的 Web 應用程序,並且只有“舊”帳戶在 3.5 實例上工作。

在此希望有人能解答!

更新:

我將 passwordFormat 更改為 Clear,我能夠創建一個新使用者並使用 4.0 應用程序登錄。密碼散列的方式似乎發生了一些變化。

更新 2:

我能夠使“舊”帳戶之一工作。通過上述對passwordFormat的更改,我將my_aspnet_membership中的PasswordFormat列更改為0,並在同一張表中手動設置密碼。雖然這令人費解且混亂,但它讓帳戶得到了它。我將嘗試執行密碼重置,看看是否可以修復損壞的帳戶。

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