Подтвердить что ты не робот

Миграция из членства ASP.NET в SimpleMembership в RTM MVC4

Новые шаблоны интернет-приложений MVC4 RTM используют поставщиков SimpleMembership, как описано здесь SimpleMembership

Мой существующий веб-сайт MVC использует структуру ASP.Membership, и в идеале я хотел бы перенести пользовательские данные в эти таблицы в новые таблицы SimpleMembership. Мои причины для этого:

  • Более чистая интеграция с остальной частью моей базы данных, использующей EF
  • Поддержка Azure и OAuth из коробки
  • Используйте последние контроллеры/представления MVC4 RTM без необходимости изменять
  • Я всегда чувствовал, что существующая реализация членства была немного раздутой за то, что мне нужно.

Итак, сегодня я написал SQL script для переноса данных в существующих таблицах членства ASP.Net в новые таблицы Simple Membership. Это можно найти здесь

Тестирование входа на моем веб-сайте MVC 4 приводит к сбою пароля. Я считаю, что SimpleMembership использует другой пароль, чем прежняя структура членства, поскольку новые пароли, созданные в рамках платформы SimpleMemberShip, выглядят намного дольше.

Итак, мой вопрос заключается в том, что я использовал "хешированный" формат пароля в старых провайдерах членства в ASP.Net, а исходный пароль пользователя был безвозвратным, какие параметры мне нужно получить, чтобы работать с SimpleMembership.

Я предполагаю, что некоторые опции:

  • Поднимите моих пользователей в reset их пароли
  • Получение провайдера SimpleMembership для использования того же пароля algo, что и старые поставщики членства ASP.Net.
  • Верните новые шаблоны интернет-приложений MVC 4 RTM для использования старых поставщиков ASP.Net MemberShip. Это наименее желательные варианты для меня, поскольку я хотел бы использовать структуру SimpleMemberShip.

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

Любая помощь очень ценится.

Приветствия

Джим

4b9b3361

Ответ 2

У вас есть доступ к текстовому паролю, когда пользователь входит в систему, что дает вам еще один вариант:

  • Сохранять старые пароли в отдельной таблице
  • При входе в систему сначала используйте метод SimpleMembership
  • Если это не удается, проверьте старую таблицу паролей с использованием старого алгоритма хэширования (вам нужно убедиться, что пароль обычного текста по-прежнему находится в контексте)
  • Если это удастся, обновите таблицы SimpleMembership и удалите из старой таблицы паролей

Пользователям не нужно будет знать об изменениях, а активные пользователи будут иметь более безопасный хеш. Если вы хотите принудительно обновить систему безопасности в будущем, вы можете предупредить пользователей о том, что их учетные записи будут удалены через год бездействия, и просто удалите двухступенчатую систему.

Ответ 3

У меня была аналогичная проблема, я должен был написать сообщение в учебнике/блоге об этом, но моим решением было добавить следующее в мой web.config(это соответствует опции № 2):

<system.web>

    <membership hashAlgorithmType="SHA1" defaultProvider="DefaultMembershipProvider">
      <providers>
        <add name="DefaultMembershipProvider" etc.../>
      </providers>
    </membership>
    <machineKey validation="SHA1" />
    ...
</system.web>

Интересной частью приведенного выше кода является "hashAlgorithmType". Установка для SHA1 будет использовать старый хэш-алгоритм членства asp.net.

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

Надеюсь, это поможет! -Sig