Aracılığıyla paylaş


Öğretici: Uygulamaya oturum açma ekleme

Önceki öğreticide, kimlik doğrulaması için bir ASP.NET Core projesi oluşturuldu ve yapılandırıldı. Bu öğreticide gerekli paketler yüklenir ve oturum açma ve oturum kapatma deneyimine kimlik doğrulaması uygulayan kod eklenir.

Bu öğreticide:

  • Kimlik doğrulaması için gereken NuGet paketlerini tanımlama ve yükleme
  • Kodda kimlik doğrulamasını uygulama
  • Oturum açma ve oturumu kapatma deneyimlerini ekleme

Önkoşullar

Kimlik paketlerini yükleme

Kullanıcıların kimlik doğrulamasının etkinleştirilmesi için projeye kimlikle ilgili NuGet paketleri yüklenmelidir.

  1. Visual Studio'nun üst menüsünde Araçlar > NuGet Paket Yöneticisi > Çözüm için NuGet Paketlerini Yönet'i seçin.
  2. Gözat sekmesi seçili durumdayken Microsoft.Identity.Web.UI için arama yapın ve seçin. Proje onay kutusunu ve ardından Yükle'yi seçin.
  3. Bunu Microsoft.Identity.Web.Diagnostics ve Microsoft.Identity.Web.DownstreamApi için yineleyin.

Kimlik doğrulamayı uygulama ve belirteçleri alma

  1. Program.cs açın ve tüm dosya içeriğini aşağıdaki kod parçacığıyla değiştirin:

    // <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();
    

Oturum açma ve oturumu kapatma deneyimini ekleme

NuGet paketlerini yükledikten ve kimlik doğrulaması için gerekli kodu ekledikten sonra oturum açma ve oturum kapatma deneyimlerini ekleyin.

_LoginPartial.cshtml dosyasını oluşturma

  1. Sayfalar'ı genişletin, Paylaşılan'a sağ tıklayın ve Razor sayfası ekle'yi > seçin.
  2. Razor Sayfası - Boş'a ve ardından Ekle'ye tıklayın.
  3. Ad için _LoginPartial.cshtml yazın ve Ekle'yi seçin.

_LoginPartial.cshtml dosyasını düzenleme

  1. _LoginPartial.cshtml dosyasını açın ve oturum açma ve oturumu kapatma deneyimini eklemek için aşağıdaki kodu ekleyin:

    @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 dosyasını açın ve önceki adımda oluşturulan öğesine _LoginPartial bir başvuru ekleyin. Bu tek satır ve </div>arasına </ul> yerleştirilmelidir:

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

Sonraki adımlar