[Основные знания ASP.NET] — Аутентификация и авторизация — Использование удостоверений для аутентификации.
[Основные знания ASP.NET] — Аутентификация и авторизация — Использование удостоверений для аутентификации.
1. Базовые знания идентичности
1.1 Состав идентичности

В ASP.NET Core Identity — это платформа для аутентификации и авторизации пользователей. Он содержит ряд компонентов для управления функциями, связанными с идентификацией, такими как пользователи, роли, утверждения и т. д. Ниже приведены основные компоненты ASP.NET Core Identity:

  1. Менеджер пользователей:User Менеджер — это основной компонент для управления пользователями. Он обеспечивает создание、удалить、Поиск пользователей и другие операции,И управлять атрибутами пользователей и паролями.
  2. Ролевой менеджер:Role Менеджер отвечает за управление ролями пользователей, позволяя создавать, удалять, находить роли и добавлять пользователей к ролям.
  3. Пользователь:Представляет пользователей в приложении。IdentityСтруктура обеспечиваетIdentityUserРеализация по умолчанию,Вы также можете определить собственных пользователей, унаследовав этот класс.
  4. Роль:Представляет роль в приложении。добрый似于用户,IdentityПлатформа предоставляет значение по умолчаниюIdentityRoleдобрый,Вы также можете создавать собственные роли.
  5. Требовать:Оператор представляет собой некоторую атрибутивную информацию о пользователе.,Они имеют форму пар ключ-значение. Например,Оператор может представлять возраст, имя и другую информацию пользователя.
  6. SignInManager (Менеджер входа в систему):SignInManagerиспользуется для обработки пользователей Авторизоватьсяи Выйти。Он содержит учетные данные для аутентификации пользователя.,Генерация и проверка личности (токены идентификации) и других функций.
  7. Хэшер паролей:Используется для хеширования паролей пользователей.ипроверять。IdentityФреймворк использует алгоритм хеширования для шифрования паролей.,Улучшите безопасность.
  8. Поставщики токенов:IdentityПлатформа предоставляет поставщика токенов для генерацииипроверять令牌,Например, для сброса пароля、Подтверждение по электронной почтеи другие функции。
  9. DbContext (контекст базы данных):Контекст для взаимодействия с базой данных,Содержит таблицы для хранения информации о пользователе, роли и т. д.
  10. Промежуточное ПО для идентификации:для обработкиHTTPЗапрос Аутентификацияи Авторизовать。IdentityПромежуточное программное обеспечение настраивается при запуске приложения.,И отвечает за управление доступом для аутентификации пользователей.
1.2 Создание и управление идентификационными данными

В ASP.NET Core создание удостоверений и управление ими обычно включает следующие шаги:

Создать АСП.NET Core проект Сначала вам нужно создать ASP.NET. Основнойпроект. Вы можете использовать визуальный Studio или используйте инструменты командной строки,Выберите шаблон MVC или API,Зависит от типа вашего проекта.

Язык кода:javascript
копировать
dotnet new mvc -n YourProjectName

Добавить службу идентификации В проекте необходимо Добавить службу идентификация. Обычно это включает в себя следующие шаги:

Установите пакет удостоверений Запустите следующую команду в терминале (командной строке) в каталоге проекта:

Язык кода:javascript
копировать
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore

Настройка службы идентификации существоватьStartup.csДокументальный фильмConfigureServicesв методе,Добавьте следующий код в Настройка службы идентификации:

Язык кода:javascript
копировать
services.AddIdentity<IdentityUser, IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

здесь,IdentityUser是表示用户的добрый,IdentityRole是表示角色的добрый。ApplicationDbContext是Контекст для взаимодействия с базой данных。

CreateDbContext Вам необходимо создатьDbContextвзаимодействовать с базой данных。этотDbContextобычно происходит отIdentityDbContext<TUser, TRole, TKey>добрый,где TUserиTRole — класс вашей роли пользователя,TKey — это их основной тип ключа.

Язык кода:javascript
копировать
public class ApplicationDbContext : IdentityDbContext<IdentityUser, IdentityRole, string>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}

Миграция базы данных Выполните следующую команду, чтобы применить миграцию удостоверений. базы данных:

Язык кода:javascript
копировать
dotnet ef migrations add InitialCreate
dotnet ef database update

Усеидентити Теперь вы можете Усеидентити в своем приложении. Создание и проверка пользователей, Назначение роли, вы можете использовать ее для выполнения таких операций, как Авторизация UserManager, SignInManager и RoleManager завершить. Вот несколько примеров основных операций:

Создать пользователя

Язык кода:javascript
копировать
var user = new IdentityUser { UserName = "username", Email = "user@example.com" };
var result = await userManager.CreateAsync(user, "password");
  • Вход пользователя
Язык кода:javascript
копировать
var result = await signInManager.PasswordSignInAsync("username", "password", false,false);
if (result.Succeeded)
{
    // Авторизоваться成功
}

Назначение ролей

Язык кода:javascript
копировать
var user = await userManager.FindByNameAsync("username");
await userManager.AddToRoleAsync(user, "Admin");

Аутентификация и авторизация 你可以使用AuthorizeАтрибуты для защиты вашего контроллера или методов действий:

Язык кода:javascript
копировать
[Authorize(Roles = "Admin")]
public IActionResult AdminPage()
{
    // Доступ имеют только пользователи с ролью «Администратор».
    return View();
}

Это простое руководство по началу работы,на самом деле,Identity предоставляет больше возможностей,Включает сброс пароля, Подтверждение по электронной почте、Двухфакторная аутентификация и многое другое. Вы можете дополнительно расширять и настраивать функции Identity в соответствии со своими потребностями.

1.3 Процесс проверки личности

Процесс проверки личности ASP.NET Core включает в себя несколько компонентов и шагов. Вот общий процесс аутентификации:

  1. Вход пользователяпросить: Когда пользователи пытаются Авторизоваться, они обычно предоставляют имя пользователя (или адрес электронной почты) и пароль.
  2. Проверьте учетные данные пользователя:
    • IdentityвSignInManager组件会проверять提供的用户名ипароль。
    • Если учетные данные действительны,Пользователь будет помечен как прошедший Аутентификацию.
  3. Сгенерируйте идентификационные токены:
    • проходитьSignInManagerСоздать идентификатор пользователя(Identity Token)。
    • Идентификация содержит информацию о пользователе, такую ​​как идентификатор пользователя, имя пользователя, роль и т. д.
  4. Создание сертификатов и управление ими Cookie:
    • Identity использует файлы cookie для отслеживания пользователей, прошедших Аутентификацию.
    • проходитьSignInManagerидентифицировать(Identity Токен) сохраняется в файле cookie, чтобы последующие запросы могли использовать файл cookie для идентификации пользователя.
  5. Контроль доступа:
    • проходить[Authorize]атрибуты или другие Аутентификацияфильтр,Контроль доступа можно настроить на уровне контроллера или метода действия.
    • Промежуточное программное обеспечение Identity проверит наличие файлов cookie в запросе.,Чтобы убедиться, что пользователь прошел Аутентификацию,и может требовать определенных ролей или утверждений.
  6. Выход:
    • Когда пользователь просит выйти из системы,SignInManager会Выйти用户并清除相关的Cookie。

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

3. Преимущества и проблемы идентичности
3.1 Преимущества идентичности

ASP.NET Core Identity Предоставляет множество преимуществ, которые делают управление авторизацией пользователей в приложении более простым, безопасным и гибким. Вот некоторые ASP.NET Core Identity Основные преимущества:

  1. Легко интегрировать: Identity Обеспечивает легкую интеграцию в ASP.NET Core Приложение API и инструменты. После небольшой настройки вы можете добавить в свое приложение функцию авторизации Аутентификации.
  2. Настраиваемость: хотя Identity Предоставляется реализация по умолчанию,Но вы можете настроить его в соответствии со своими потребностями. Вы можете использовать собственные классы пользователей и ролей.,Изменить модель данных по умолчанию,И добавьте пользовательские декларации и т. д.
  3. Безопасность: Identity 提供了пароль哈希、Механизм токена、Заблокировать аккаунт、Функции безопасности, такие как двухфакторная аутентификация.。пароль哈希保护了用户пароль,и Механизм токенаи Двухфакторная аутентификация расширяет возможности пользователя Аутентификациябезопасность。
  4. Поддерживает несколько вариантов хранения: Identity Поддерживает несколько серверов хранения данных, в том числе Entity Framework Core, Dapper и другие поставщики специализированных хранилищ. Это означает, что вы можете выбрать решение для хранения, которое подходит именно вам.
  5. Управление идентификацией: Identity Обеспечивает управление удостоверениями, такими как пользователи, роли, утверждения и т. д. API. проходить UserManager и RoleManager,Вы можете легко выполнять операции по управлению пользователями и ролями.
  6. Сброс пароля и письмо с подтверждением: Identity Предусмотрены функции сброса пароля и подтверждения электронной почты, позволяющие пользователям безопасно сбросить пароль или подтвердить адрес электронной почты.
  7. Интеграция входа через социальные сети: Identity Поддерживает интеграцию с внешними поставщиками удостоверений (такими как Google, Facebook, Microsoft и т. д.), чтобы пользователи могли проводить авторизацию, используя свои учетные записи в социальных сетях.
  8. Упрощенный процесс аутентификации: Identity Устраняет множество сложностей в процессе аутентификации, в том числе Cookie Управление, генерация токенов и т. д. Это позволяет разработчикам больше сосредоточиться на бизнес-логике.
  9. Роль и заявление: Identity Предоставляет концепцию ролей и объявлений.,Упрощает более детальную авторизацию пользователей. Вы можете определить роли,Назначьте пользователей ролям,И используйте объявления, чтобы добавить более детальную авторизацию.
3.2 Возможные проблемы при реализации Identity

Хотя ASP.NET Core Identity предоставляет мощные функции авторизации аутентификации, во время реализации могут возникнуть некоторые проблемы. Вот некоторые возможные проблемы:

  1. Пользовательская сложность: Глубокое понимание может потребоваться при реализации некоторых конкретных или сложных требований авторизации аутентификации. Identity Внутренняя работа фреймворка,и внести некоторые дополнительные настройки. Это может включать в себя специального поставщика хранилища, Пользовательский. класс пользователя и роли、и другие расширенные конфигурации.
  2. Миграция базы данных: при использовании Entity Framework Core Выступая в качестве поставщика хранилища, выполните Миграцию. базы данных Может включать изменение нескольких таблиц.。существовать一些情况下,Особенно, когда меняется существующая структура базы данных.,К миграции необходимо подходить осторожно, чтобы предотвратить потерю или несогласованность данных.
  3. Соображения производительности: По мере увеличения числа пользователей Identity Производительность таблиц базы данных может стать проблемой. Возможно, вы захотите рассмотреть такие стратегии, как индексирование и кэширование базы данных, для повышения производительности.
  4. Фронтальная интеграция: Хотя Identity Обработана авторизация Аутентификации на серверной части, но реализован Вход на веб-интерфейсе. пользователя、зарегистрироваться、И такие процессы, как сброс пароля, все еще требуют доработки. Интеграция внешнего и внутреннего интерфейса должна учитывать удобство пользователя и безопасность.
  5. Интеграция входа через социальные сети: Интегрируйте внешних поставщиков удостоверений, таких как Google、Facebook и т. д.) может потребовать некоторой дополнительной настройки и обработки. У разных поставщиков удостоверений могут быть разные требования и ограничения.
  6. Конфигурация безопасности: Хотя Identity Предусмотрено множество функций безопасности, но правильная настройка по-прежнему имеет решающее значение. Например, настройте политики паролей, двухфакторную аутентификацию и предотвратите распространенные атаки (такие как атаки с использованием межсайтовых сценариев, подделку межсайтовых запросов и т. д.).
  7. Совместимость версий: В жизненном цикле проекта Айдентика Могут быть выпущены новые версии фреймворка. При обновлении до новой версии вам может потребоваться внести некоторые изменения для обеспечения совместимости.
  8. Понимание документа: потому что Identity Платформа предоставляет множество функций, и понимание и правильное использование этих функций может потребовать детального прочтения документации и справочных материалов.
4. Резюме

ASP.NET Core Identity — это основа авторизации аутентификации для ASP.NET. Основное приложение. В его состав входят Пользователь Manager、Role Менеджер, Пользователь, Роль, Утверждение и т. д. через SignInManager. пользователяиуправлять。УсеидентитинуждатьсяCreateDbContext、руководить Миграция базы данных и может быть реализован по умолчанию или настроен в соответствии с потребностями проекта. Identity предоставляет такие преимущества, как простая интеграция, широкие возможности настройки, высокий уровень безопасности и поддержка нескольких хранилищ. Возможные проблемы во время внедрения включают сложность настройки, миграцию. базы данные, соображения производительности, интеграция внешнего интерфейса, интеграция авторизации в социальных сетях и т. д., но при правильном понимании конфигурации и документации эти проблемы можно преодолеть. ASP.NET Core Identity предоставляет разработчикам упрощенное и мощное решение для авторизации при аутентификации.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose