Ошибка входа в систему после обновления до ASP.net 4.0 с 3.5 - PullRequest
6 голосов
/ 29 апреля 2010

Я не могу войти в систему, используя какую-либо учетную запись участника, используя версию приложения .net 4.0. Он терпит неудачу, как будто это неправильный пароль, и FailedPasswordAttemptCount увеличивается в таблице my_aspnet_membership. (Я использую членство с провайдером членства mysql.)

Я могу создавать новых пользователей. Они появляются в базе данных. Но я не могу войти, используя учетные данные нового пользователя (да, IsApproved равно 1).

Одна подсказка заключается в том, что хешированные пароли в базе данных длиннее для пользователей, созданных с использованием версии asp.net 4.0, например, 3lwRden4e4Cm + cWVY / spa8oC3XGiKyQ2UWs5fxQ5l7g =, а старые .net 3.5 все похожи на + JQf1EcttK + 3fZVFF 3BF ,

Я все еще могу войти при подключении к той же БД с версией .net 3.5, но только к старым учетным записям, а не к новым, созданным с версией .net 4.0. Версия 4.0 не может войти ни в какие аккаунты.

Я попытался удалить всю базу данных в моей тестовой системе, затем таблицы членства автоматически создаются при первом запуске, но все равно остается тем же, может создавать пользователей, но не может войти.

Ответы [ 2 ]

13 голосов
/ 04 мая 2010

См .: ЗДЕСЬ

Алгоритм хеширования по умолчанию был изменен для .net 4.0. Алгоритм хеширования по умолчанию теперь HMACSHA256. В более ранних версиях ASP.NET использовался более старый алгоритм HMACSHA1.

Чтобы настроить веб-приложение ASP.NET 4 для использования более старого алгоритма HMACSHA1, добавьте следующий параметр в раздел system.web файла Web.config:

<machineKey validation="SHA1"/>
2 голосов
/ 29 апреля 2010

У меня точно такая же проблема. У меня есть веб-приложение в 3.5 и 4.0, и только экземпляры 3.5 работают на экземпляре 3.5.

Надеюсь, у кого-то есть ответ!

UPDATE:

Я изменил формат пароля на Очистить и смог создать нового пользователя и войти в систему с помощью приложения 4.0. Похоже, что что-то изменилось в способе хэширования паролей.

ОБНОВЛЕНИЕ 2:

Мне удалось заставить работать один из "старых" аккаунтов. С учетом вышеуказанного изменения в PasswordFormat я изменил столбец PasswordFormat в my_aspnet_membership на 0 и установил пароль вручную в той же таблице. Хотя это запутанно и грязно, оно позволяет аккаунту получить его. Я собираюсь попробовать сбросить пароль и посмотреть, исправит ли это сломанные учетные записи.

...