Руководство. Добавление входа в приложение
В предыдущем руководстве был создан и настроен проект ASP.NET Core для проверки подлинности. В этом руководстве будут установлены необходимые пакеты и добавлен код, реализующий проверку подлинности, в интерфейс входа и выхода.
В этом руководстве рассматриваются следующие темы:
- Определение и установка пакетов NuGet, необходимых для проверки подлинности
- Реализация проверки подлинности в коде
- Добавление возможностей входа и выхода
Необходимые компоненты
- Завершение предварительных требований и шагов, описанных в руководстве. Подготовка приложения для проверки подлинности.
Установка пакетов удостоверений
Пакеты NuGet, связанные с удостоверениями, должны быть установлены в проекте для включения проверки подлинности пользователей.
- В верхнем меню Visual Studio выберите Сервис > NuGet диспетчер пакетов > Управление пакетами NuGet для решения.
- На вкладке "Обзор" найдите и выберите Microsoft.Identity.Web.UI. Выберите поле "Проект проверка", а затем нажмите кнопку "Установить".
- Повторите это для Microsoft.Identity.Web.Diagnostics и Microsoft.Identity.Web.DownstreamApi.
Реализация проверки подлинности и получение маркеров
Откройте Program.cs и замените все содержимое файла следующим фрагментом кода:
// <ms_docref_import_types> using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc.Authorization; using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; // </ms_docref_import_types> // <ms_docref_add_msal> WebApplicationBuilder builder = WebApplication.CreateBuilder(args); IEnumerable<string>? initialScopes = builder.Configuration["DownstreamApi:Scopes"]?.Split(' '); builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, "AzureAd") .EnableTokenAcquisitionToCallDownstreamApi(initialScopes) .AddDownstreamApi("DownstreamApi", builder.Configuration.GetSection("DownstreamApi")) .AddInMemoryTokenCaches(); // </ms_docref_add_msal> // <ms_docref_add_default_controller_for_sign-in-out> builder.Services.AddRazorPages().AddMvcOptions(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI(); // </ms_docref_add_default_controller_for_sign-in-out> // <ms_docref_enable_authz_capabilities> WebApplication app = builder.Build(); app.UseAuthentication(); app.UseAuthorization(); // </ms_docref_enable_authz_capabilities> app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.MapRazorPages(); app.MapControllers(); app.Run();
Добавление интерфейса входа и выхода
После установки пакетов NuGet и добавления необходимого кода для проверки подлинности добавьте интерфейс входа и выхода.
Создание файла _LoginPartial.cshtml
- Разверните страницы, щелкните правой кнопкой мыши общий доступ и выберите пункт "Добавить > Razor".
- Выберите Страницу Razor — пустую, а затем нажмите кнопку "Добавить".
- Введите _LoginPartial.cshtml для имени и нажмите кнопку "Добавить".
Изменение файла _LoginPartial.cshtml
Откройте _LoginPartial.cshtml и добавьте следующий код для добавления интерфейса входа и выхода:
@using System.Security.Principal <ul class="navbar-nav"> @if (User.Identity?.IsAuthenticated == true) { <li class="nav-item"> <span class="navbar-text text-dark">Hello @User.Identity?.Name!</span> </li> <li class="nav-item"> <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a> </li> } else { <li class="nav-item"> <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a> </li> } </ul>
Откройте файл _Layout.cshtml и добавьте ссылку,
_LoginPartial
созданную на предыдущем шаге. Эта одна строка должна быть помещена между</ul>
и</div>
:</ul> <partial name="_LoginPartial" /> </div>