Я видел много похожих страниц в Интернете, но большинство из них используют новый проект вместо существующего или не имеют необходимых функций. Итак, у меня есть существующий MVC 5
проект, и я хочу интегрировать ASP.NET MVC5 Identity с функциями входа в систему, подтверждения электронной почты и сброса пароля .
В дополнение к этому мне также необходимо создать все необходимые таблицы в базе данных, например, пользователя, роли, группы и т. Д. (Я использую EF Code First в своем проекте). Есть ли статья или образец, который соответствует этим потребностям? Любое предложение будет оценено. Заранее спасибо...
Ответы:
Настройка идентичности для вашего существующего проекта не сложная вещь. Вы должны установить пакет NuGet и выполнить небольшую настройку.
Сначала установите эти пакеты NuGet с помощью консоли диспетчера пакетов:
Добавьте пользовательский класс и с
IdentityUser
наследованием:Сделайте то же самое для роли:
Измените вашего
DbContext
родителя сDbContext
таким,IdentityDbContext<AppUser>
как это:Если вы используете ту же строку подключения и включили миграцию, EF создаст для вас необходимые таблицы.
При желании вы можете расширить
UserManager
желаемую конфигурацию и настройки:Поскольку идентификация основана на OWIN, вам также необходимо настроить OWIN:
Добавьте класс в
App_Start
папку (или где-либо еще, если хотите). Этот класс используется OWIN. Это будет ваш стартовый класс.Почти готово, просто добавьте эту строку кода в ваш
web.config
файл, чтобы OWIN мог найти ваш класс запуска.Теперь во всем проекте вы можете использовать Identity, как и любой новый проект, уже установленный VS. Рассмотрим действие входа в систему, например
Вы можете создавать роли и добавлять к своим пользователям:
Вы также можете добавить роль пользователю, например так:
С помощью
Authorize
вы можете охранять свои действия или контролеров:или
Вы также можете установить дополнительные пакеты и настроить их так, чтобы они соответствовали вашим требованиям, как
Microsoft.Owin.Security.Facebook
вам угодно.Примечание: не забудьте добавить соответствующие пространства имен в ваши файлы:
Вы также можете увидеть мои другие ответы, подобные этому и этому, для расширенного использования Идентичности.
источник
AppRole
и менеджер ролей Identity для классификации пользователей. А посколькуRole
s иRoleManager
уже реализованы самой Identity, вам не нужно переписывать уже реализованный код. Я обновлю пост, чтобы показать вам, как вы можете использовать роли. И, как я уже говорил, вам просто нужно добавитьAppUser
иAppRole
сущности для инициализации Identity. Унаследовав своюDbContext
отIdentityDbContext<AppUser>
всех необходимых таблиц, добавь свою таблицу. Вам не нужно ничего делать, просто включите миграцию.Microsoft.AspNet.Identity.EntityFramework
в свой домен и другое для пользовательского интерфейса.web.config
. Не заменяйте старый. Прочитайте это для получения дополнительной информации . Я думаю, что ваш MVC также обновлен.AspNetRoles
AspNetUserClaims
AspNetUserLogins
AspNetUserRoles
иAspNetUsers
Это то, что я сделал, чтобы интегрировать Identity с существующей базой данных.
Создайте пример проекта MVC с шаблоном MVC. Здесь есть весь код, необходимый для реализации Identity - Startup.Auth.cs, IdentityConfig.cs, код контроллера учетных записей, управление контроллером, модели и связанные представления.
Установите необходимые пакеты nuget для Identity и OWIN. Вы получите представление, увидев ссылки в примере проекта и ответ @Sam
Скопируйте весь этот код в ваш существующий проект. Обратите внимание: не забудьте добавить строку подключения «DefaultConnection», чтобы Identity отображался в вашей базе данных. Пожалуйста, проверьте класс ApplicationDBContext в IdentityModel.cs, где вы найдете ссылку на строку подключения «DefaultConnection».
Это сценарий SQL, который я запустил в своей существующей базе данных для создания необходимых таблиц:
Проверьте и устраните все оставшиеся ошибки, и все готово. Личность справится с остальными :)
источник
Я рекомендую IdentityServer. Это проект .NET Foundation, в котором рассматриваются многие вопросы аутентификации и авторизации.
обзор
IdentityServer - это основанный на .NET / Katana каркас и размещаемый компонент, который позволяет реализовать единый вход и контроль доступа для современных веб-приложений и API-интерфейсов с использованием таких протоколов, как OpenID Connect и OAuth2. Он поддерживает широкий спектр клиентов, таких как мобильные, веб, SPA и настольные приложения, и является расширяемым, чтобы обеспечить интеграцию в новые и существующие архитектуры.
Для получения дополнительной информации, например,
Проверьте документацию и демо .
источник