ASP.NET Core Identity

Asp.net core identity

Последнее обновление: 14.12.2022

ASP.NET Identity представляет встроенную в ASP.NET систему аутентификации и авторизации. Данная система позволяет пользователям создавать учетные записи, аутентифицироваться, управлять учетными записями или использовать для входа на сайт
учетные записи внешних провайдеров, таких как Facebook, Google, Microsoft, Twitter и других.

Так, создадим новый проект ASP.NET Core по типу Web Application (Model-View-Controller) с типом аутентификации Individual User Accounts.:

ASP.NET Core Identity в Visual Studio

Для выбора типа аутентификации в окне выбора типа проекта в секции Authentication нажмем на ссылку Change. При нажати на эту ссылку откроется окно установки типа аутентифкации:

ASP.NET Core Identity и тип аутентификации

В этом окне соответственно надо указать Individual User Accounts и в центральной части
Store user accounts in-app – сохранение учетных данных пользователей в локальной базе данных.

В итоге будет следующий проект:

ASP NET Core Idenity 2.1

По большому счету сообственно от Identity здесь по умолчанию добавлено не так много функционала. В частности, добавлен
класс ApplicationDbContext – контекст данных для работы с Identity. В папке Areas->Identity->Pages
можно найти файл _ViewStart.cshtml. И есть некоторые изменения в файле Startup.

Однако в отличие от предыдущих версий ASP.NET Core в проект по умолчанию не добавляется никаких контроллеров, моделей, представлений,
которые обеспечили бы нам полноценную работу с Identity сразу после создания проекта. И весь этот функционал необходимо добвлять самим.
Но тем не менее Visual Studio позволяет добавить весь необходимый функционал. Для этого нажмем на название проекта правой кнопкой мыши и в
контекстном меню выберем пункт Add -> New Scaffolded Item

Scaffold ASP.NET Core Identity

Далее в открывшемся окне выберем Idenity:

Добавление в проект ASP.NET Core Identity

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

ASP.NET Core Identity Razor Pages

В частности, к примеру, я отметил пункты Account/Login и Account/Register, то есть функционал для регистрации и входа в приложение.
Кроме того, в поле Data context class надо указать класс контекста данных. По умолчанию при создании в проект уже добавляется
класс контекста, который можно указать в этом поле.

Похожее:  Установка и настройка FreeIPA - IT Pro Blog

Опционально также можно указать путь внутри проекта к мастер-станице и класс пользователя. Но можно также оставить эти поля пустыми, как в моем случае.

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

ASP.NET Core Identity

Поскольку я отметил пункты Account/Login и Account/Register, то в папке Areas/Idenity/Pages/Account
можно будет найти Razor-страницы Login и Register, выполняющих соответствующие функции.

Вне зависимости от того, какие функции мы отметили при добавлении Identity, весь функционал по работе с учетными записями помещается
в папку Areas/Identity. Начиная с версии ASP.NET Core 2.1 это страницы Razor Pages, которые выполняют какую-то определенную задачу – вход в систему, регистрацию и так далее.

Но чтобы все эти станицы могли выполнять свою роль, в классе Startup добавляется конфигурация Identity. В его методе ConfigureServices() в приложение добавляются сервисы Identity:

public void ConfigureServices(IServiceCollection services)
{
	//.......................
	
	// добавление ApplicationDbContext для взаимодействия с базой данных учетных записей
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

    // добавление сервисов Idenity
    services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
                .AddEntityFrameworkStores<ApplicationDbContext>();

	//........................
}

Во-первых, здесь добавляются сервисы Entity Framework, которые используются для работы с базой данных, хранящей учетные записи. Все настройки подключения
заданы в файле appsettings.json в узле ConnectionStrings.

А в методе Configure() функционал аутентификации и авторизации на основе системы Identity становится доступным через вызовы методов UseAuthentication
и app.UseAuthorization(), как и в любой системе аутентификации и авторизации в ASP.NET Core:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    //..........................

    app.UseAuthentication();
	app.UseAuthorization();
	
    //.................................
}

При начале работы с проектом нам надо учитывать, что он использует Entity Framework, поэтому прежде всего нам надо выполнить миграции, чтобы создать базу данных.
В проекте уже по умолчанию есть миграции, которые нам осталось применить. Для этого откроем окно Package Manager Console
и введем в командную строку следующую команду:

Update-Database

ASP.NET Core Identity

Запустим проект на выполнение. И в меню веб-страницы мы увидим дополнительные пункты для регистрации и входа на сайт:

Похожее:  Как ты реализуешь аутентификацию, приятель? / Хабр

Create Application with ASP.NET Core Identity

Нажмем на кнопку регистрации и перед нами откроется форма для регистрации нового пользователя. Введем в нее какие-нибудь данные:

Регистрация в ASP.NET Core Identity

И после регистрации в базу данных будет добавлен новый пользователь, а нас перенаправят на страницу подтверждения регистрации:

Подтверждение регистрации в ASP.NET Core Identity

На этой странице нажмем на ссылку “Click here to confirm your account”. По умолчанию при создании пользователя в базе данных в таблице пользователей в поле “EmailConfirmed” устанавливается значение False.
От этого зависит возможности пользователя. В частности, пока он не подтвердит свой email, он даже не сможет войти в приложение. По умолчанию,
в приложении нет конечно никаких возможностей по подтверждению через электонную почту. И нажатие на данную ссылку как раз симулирует
подтверждение аккаунта.

Далее с логином и паролем созданного пользователя мы сможем заходить в приложение.

Login in ASP.NET Core IdentityВход в систему ASP.NET Core MVC Identity

При желании мы можем найти базу данных в окне SQL Server Object Explorer по имени, заданному в файле appsettings.json.
В частности, в таблице dbo.AspNetUsers, которая предназначена для хранения пользователей, мы как раз сможем обнаружить данные добавленного пользователя.

ASP.NET Core Identity

НазадСодержаниеВперед

Авторизация

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

ASP.NET Core Identity

Атрибут allowanonymous

Атрибут AllowAnonymous позволяет открыть доступ для анонимных пользователей. Обычно он применяется к методам контроллера, который уже защищен атрибутом
Authorize. Например:

Кастомные фильтр авторизации


Кастомный фильтр должен быть унаследован от одного из следующих типов:

Следующая диаграмма показывает иерархию классов фильтров:
ASP.NET Core Identity

Установка контекста безопасности

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

Следующий код показывает как задать контекст безопасности:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 4,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector