從 3.5 升級到 ASP.net 4.0 後登錄失敗
我無法使用任何使用 .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,並在同一張表中手動設置密碼。雖然這令人費解且混亂,但它讓帳戶得到了它。我將嘗試執行密碼重置,看看是否可以修復損壞的帳戶。