Руководство. Добавление входа в приложение

В предыдущем руководстве был создан и настроен проект ASP.NET Core для проверки подлинности. В этом руководстве будут установлены необходимые пакеты и добавлен код, реализующий проверку подлинности, в интерфейс входа и выхода.

В этом руководстве рассматриваются следующие темы:

  • Определение и установка пакетов NuGet, необходимых для проверки подлинности
  • Реализация проверки подлинности в коде
  • Добавление возможностей входа и выхода

Необходимые компоненты

Установка пакетов удостоверений

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

  1. В верхнем меню Visual Studio выберите Сервис > NuGet диспетчер пакетов > Управление пакетами NuGet для решения.
  2. На вкладке "Обзор" найдите и выберите Microsoft.Identity.Web.UI. Выберите поле "Проект проверка", а затем нажмите кнопку "Установить".
  3. Повторите это для Microsoft.Identity.Web.Diagnostics и Microsoft.Identity.Web.DownstreamApi.

Реализация проверки подлинности и получение маркеров

  1. Откройте 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

  1. Разверните страницы, щелкните правой кнопкой мыши общий доступ и выберите пункт "Добавить > Razor".
  2. Выберите Страницу Razor — пустую, а затем нажмите кнопку "Добавить".
  3. Введите _LoginPartial.cshtml для имени и нажмите кнопку "Добавить".

Изменение файла _LoginPartial.cshtml

  1. Откройте _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>
    
  2. Откройте файл _Layout.cshtml и добавьте ссылку, _LoginPartial созданную на предыдущем шаге. Эта одна строка должна быть помещена между </ul> и </div>:

        </ul>
        <partial name="_LoginPartial" />
    </div>
    

Следующие шаги