Aracılığıyla paylaş


ASP.NET Core Blazor WebAssembly ile Güvenli ASP.NET Çekirdeği Identity

Bu makaledeki yönergeler izlenerek tek başına Blazor WebAssembly uygulamaların güvenliği ASP.NET Core Identity ile sağlanabilir.

Kaydolma, oturum açma ve oturumu kapatma uç noktaları

SPA ve uygulamalar için ASP.NET Core Identity tarafından sağlanan ve Blazor Sayfalar'ı temel alan Razor varsayılan kullanıcı arabirimini kullanmak yerine arka uç API'sini çağırarak MapIdentityApi ASP.NET Core Identitykullanan kullanıcılara kaydolmak ve oturum açmak için ON API uç noktaları ekleyinJS. Identity API uç noktaları, iki öğeli kimlik doğrulaması ve e-posta doğrulaması gibi gelişmiş özellikleri de destekler.

İstemcide, bir kullanıcıyı e-posta adresi ve parolasıyla kaydetmek için uç noktayı çağırın /register :

var result = await _httpClient.PostAsJsonAsync(
    "register", new
    {
        email,
        password
    });

İstemcide, sorgu dizesi olarak ayarlanmış uç noktayı kullanarak /login kimlik doğrulamasıyla useCookies bir kullanıcının cookie oturumunu trueaçın:

var result = await _httpClient.PostAsJsonAsync(
    "login?useCookies=true", new
    {
        email,
        password
    });

Arka uç sunucusu API'si cookie , kimlik doğrulama oluşturucusunun çağrısıyla AddIdentityCookies kimlik doğrulaması oluşturur:

builder.Services
    .AddAuthentication(IdentityConstants.ApplicationScheme)
    .AddIdentityCookies();

Belirteç kimlik doğrulaması

Bazı istemcilerin cookiedesteklemediği yerel ve mobil senaryolar için oturum açma API'si belirteç istemek için bir parametre sağlar. Sonraki isteklerin kimliğini doğrulamak için kullanılabilecek özel bir belirteç (ASP.NET Core Identity platformuna özel bir belirteç) verilir. Belirteç üst bilgisinde Authorization taşıyıcı belirteç olarak geçirilmelidir. Yenileme belirteci de sağlanır. Bu belirteç, kullanıcının yeniden oturum açmaya zorlamadan eskisinin süresi dolduğunda uygulamanın yeni bir belirteç istemesine olanak tanır.

Belirteçler standart JSON Web Belirteçleri (JWT) değildir. Yerleşik Identity API öncelikli olarak basit senaryolar için tasarlandığından özel belirteçlerin kullanımı kasıtlıdır. Belirteç seçeneğinin tam özellikli bir kimlik hizmeti sağlayıcısı veya belirteç sunucusu olması amaçlanmamıştır, bunun yerine s kullanamayan cookieistemciler için bu seçeneğe bir alternatiftircookie.

Aşağıdaki kılavuz, oturum açma API'siyle belirteç tabanlı kimlik doğrulaması uygulama işlemini başlatır. Uygulamayı tamamlamak için özel kod gereklidir. Daha fazla bilgi için bkz. SPA'lar için Web API arka ucu güvenliğini sağlamak için kullanmaIdentity.

Arka uç sunucu API'sinin kimlik doğrulama oluşturucusunun çağrısıyla AddIdentityCookies kimlik doğrulamasını oluşturması cookie yerine, sunucu API'si uzantı yöntemiyle taşıyıcı belirteç kimlik doğrulamasını AddBearerToken ayarlar. ile IdentityConstants.BearerSchemetaşıyıcı kimlik doğrulama belirteçleri için düzeni belirtin.

içinde Backend/Program.cs, kimlik doğrulama hizmetlerini ve yapılandırmasını aşağıdaki şekilde değiştirin:

builder.Services
    .AddAuthentication()
    .AddBearerToken(IdentityConstants.BearerScheme);

içindeBlazorWasmAuth/Identity/CookieAuthenticationStateProvider.cs, yönteminin LoginAsync sorgu dizesi parametresini CookieAuthenticationStateProviderkaldırınuseCookies:

- login?useCookies=true
+ login

Bu noktada istemcide öğesini ayrıştırmak AccessTokenResponse ve erişim ve yenileme belirteçlerini yönetmek için özel kod sağlamanız gerekir. Daha fazla bilgi için bkz. SPA'lar için Web API arka ucu güvenliğini sağlamak için kullanmaIdentity.

Ek Identity senaryolar

API tarafından sağlanan ek Identity senaryolar için bkz. SPA'lar için Web API arka ucu güvenliğini sağlamak için kullanmaIdentity:

  • Seçili uç noktaların güvenliğini sağlama
  • Belirteç kimlik doğrulaması
  • İki öğeli kimlik doğrulaması (2FA)
  • Kurtarma kodları
  • Kullanıcı bilgileri yönetimi

Örnek uygulamalar

Bu makalede örnek uygulamalar, arka uç web API'si aracılığıyla ASP.NET Core'a Identity erişen tek başına Blazor WebAssembly uygulamalar için bir başvuru görevi görür. Tanıtım iki uygulama içerir:

  • Backend: ASP.NET Core Identityiçin kullanıcı kimlik deposu bulunduran bir arka uç web API'si uygulaması.
  • BlazorWasmAuth: Kullanıcı kimlik doğrulamasına sahip tek başına Blazor WebAssembly bir ön uç uygulaması.

Aşağıdaki bağlantıyla deponun kökünden en son sürüm klasörü aracılığıyla örnek uygulamalara erişin. Örnekler .NET 8 veya üzeri için sağlanır. README Örnek uygulamaları çalıştırma adımları için klasördeki dosyaya BlazorWebAssemblyStandaloneWithIdentity bakın.

Örnek kodu görüntüleme veya indirme (indirme)

Arka uç web API'si uygulama paketleri ve kodu

Arka uç web API'si uygulaması, ASP.NET Core Identityiçin bir kullanıcı kimlik deposu tutar.

Paketler

Uygulama aşağıdaki NuGet paketlerini kullanır:

Uygulamanız bellek içi sağlayıcıdan farklı EF Core bir veritabanı sağlayıcısı kullanacaksa, için Microsoft.EntityFrameworkCore.InMemoryuygulamanızda paket başvurusu oluşturmayın.

Uygulamanın proje dosyasında ().csproj sabit genelleştirme yapılandırılır.

Örnek uygulama kodu

Uygulama ayarları arka uç ve ön uç URL'lerini yapılandırır:

  • Backend uygulama (BackendUrl): https://localhost:7211
  • BlazorWasmAuth uygulama (FrontendUrl): https://localhost:7171

Dosya, Backend.http hava durumu veri isteğini test için kullanılabilir. BlazorWasmAuth Uç noktayı test etmek için uygulamanın çalışıyor olması gerektiğini ve uç noktanın dosyaya sabit kodlandığını unutmayın. Daha fazla bilgi için bkz . Visual Studio 2022'de .http dosyalarını kullanma.

Aşağıdaki kurulum ve yapılandırma, uygulamanın Program dosyasında bulunur.

Kimlik doğrulaması ile kullanıcı cookie kimliği ve AddIdentityCookiesçağrılarak AddAuthentication eklenir. Yetkilendirme denetimleri için hizmetler çağrısı AddAuthorizationBuildertarafından eklenir.

Yalnızca gösterimler için önerilen uygulama, veritabanı bağlam kaydı () için bellek içi veritabanı sağlayıcısını kullanırEF Core.AddDbContext Bellek içi veritabanı sağlayıcısı, uygulamayı yeniden başlatmayı ve kayıt ve oturum açma kullanıcı akışlarını test etme işlemini kolaylaştırır. Her çalıştırma yeni bir veritabanıyla başlar, ancak uygulama bu makalenin devamında açıklanan test kullanıcısı tohumlama tanıtım kodunu içerir. Veritabanı SQLite olarak değiştirilirse, kullanıcılar oturumlar arasında kaydedilir, ancak başlangıç öğreticisindeEF Coregösterildiği gibi veritabanı geçişler aracılığıyla oluşturulmalıdır. Üretim kodunuz için SQL Server gibi diğer ilişkisel sağlayıcıları kullanabilirsiniz.

Veritabanını kullanmak EF Core ve uç noktaları , AddEntityFrameworkStoresve AddApiEndpointsçağrıları aracılığıyla kullanıma açmak Identity için AddIdentityCoreyapılandırınIdentity.

Ön uç ve arka uç uygulamalarından gelen isteklere izin vermek için Çıkış Noktaları Arası Kaynak Paylaşımı (CORS) ilkesi oluşturulur. Uygulama ayarları bunları sağlamazsa geri dönüş URL'leri CORS ilkesi için yapılandırılır:

  • Backend uygulama (BackendUrl): https://localhost:5001
  • BlazorWasmAuth uygulama (FrontendUrl): https://localhost:5002

Swagger/OpenAPI hizmetleri ve uç noktaları web API'si belgelerine ve geliştirme testlerine dahil edilir. NSwag hakkında daha fazla bilgi için bkz . NSwag ve ASP.NET Core kullanmaya başlama.

Kullanıcı rolü talepleri uç noktadaki En Düşük API'den /roles gönderilir.

Yollar çağrılarak MapIdentityApi<AppUser>()uç noktalar için Identity eşlenir.

Kullanıcıların oturumunu kapatmak için ara yazılım işlem hattında bir oturum kapatma uç noktası (/Logout) yapılandırılır.

Uç noktanın RequireAuthorization güvenliğini sağlamak için uzantı yöntemini yol tanımına ekleyin. Denetleyici için özniteliğini [Authorize] denetleyiciye veya eyleme ekleyin.

Bir DbContext örneğin başlatılması ve yapılandırılması için temel desenler hakkında daha fazla bilgi için belgelerdeki DbContext Yaşam Süresi, Yapılandırma ve Başlatma konularına EF Core bakın.

Ön uç tek başına Blazor WebAssembly uygulama paketleri ve kodu

Tek başına Blazor WebAssembly bir ön uç uygulaması, özel bir web sayfasına erişmek için kullanıcı kimlik doğrulamasını ve yetkilendirmesini gösterir.

Paketler

Uygulama aşağıdaki NuGet paketlerini kullanır:

Örnek uygulama kodu

Klasör, Models uygulamanın modellerini içerir:

IAccountManagement Arabirimi (Identity/CookieHandler.cs) hesap yönetimi hizmetleri sağlar.

CookieAuthenticationStateProvider() sınıfıIdentity/CookieAuthenticationStateProvider.cs, tabanlı kimlik doğrulamasının cookiedurumunu işler ve arabirim tarafından IAccountManagement açıklanan hesap yönetimi hizmeti uygulamalarını sağlar. yöntemi, LoginAsync sorgu dizesi değeri truearacılığıyla kimlik doğrulamasını useCookies açıkça etkinleştirircookie. sınıfı, kimliği doğrulanmış kullanıcılar için rol talepleri oluşturmayı da yönetir.

CookieHandler() sınıfıIdentity/CookieHandler.cs, kimlik bilgilerinin her istekle birlikte veri deposunu işleyen Identity ve koruyan arka uç web API'sine gönderilmesini Identity sağlarcookie.

arka wwwroot/appsettings.file uç ve ön uç URL uç noktaları sağlar.

App Bileşen, kimlik doğrulama durumunu basamaklı parametre olarak kullanıma sunar. Daha fazla bilgi için bkz . ASP.NET Çekirdek Blazor kimlik doğrulaması ve yetkilendirme.

Bileşen MainLayout ve NavMenu bileşen, kullanıcının kimlik doğrulama durumuna göre içeriği seçmeli olarak görüntülemek için bileşeni kullanırAuthorizeView.

Aşağıdaki bileşenler yaygın kullanıcı kimlik doğrulama görevlerini işleyebilir ve hizmetlerden IAccountManagement yararlanıyor:

PrivatePage Bileşen (Components/Pages/PrivatePage.razor) kimlik doğrulaması gerektirir ve kullanıcının taleplerini gösterir.

Hizmetler ve yapılandırma dosyada Program (Program.cs):

  • İşleyici cookie kapsamlı bir hizmet olarak kaydedilir.
  • Yetkilendirme hizmetleri kaydedilir.
  • Özel kimlik doğrulama durumu sağlayıcısı kapsamlı bir hizmet olarak kaydedilir.
  • Hesap yönetimi arabirimi (IAccountManagement) kayıtlıdır.
  • Temel ana bilgisayar URL'si kayıtlı bir HTTP istemci örneği için yapılandırılır.
  • Temel arka uç URL'si, arka uç web API'si ile kimlik doğrulaması etkileşimleri için kullanılan kayıtlı bir HTTP istemci örneği için yapılandırılır. HTTP istemcisi, kimlik bilgilerinin her istekle birlikte gönderilmesini sağlamak cookie için işleyiciyi kullanırcookie.

Kullanıcının kimlik doğrulama durumu değiştiğinde çağrısı AuthenticationStateProvider.NotifyAuthenticationStateChanged yapın. Bir örnek için bkz. sınıfın LoginAsyncCookieAuthenticationStateProvider ve LogoutAsync yöntemleri (Identity/CookieAuthenticationStateProvider.cs).

Uyarı

AuthorizeView bileşeni, kullanıcının yetkilendirilip yetkilendirilmediğine bağlı olarak kullanıcı arabirimi içeriğini, seçmeli olarak görüntüler. Bir AuthorizeView bileşene yerleştirilen bir Blazor WebAssembly uygulamadaki tüm içerik kimlik doğrulaması olmadan bulunabilir, bu nedenle kimlik doğrulaması başarılı olduktan sonra hassas içerik arka uç sunucu tabanlı web API'sinden alınmalıdır. Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Kullanıcı tohumlama gösterimini test etme

SeedData() sınıfıSeedData.cs, geliştirme için test kullanıcılarının nasıl oluşturulacağını gösterir. Leela adlı test kullanıcısı, e-posta adresiyle leela@contoso.comuygulamada oturum açar. Kullanıcının parolası olarak Passw0rd!ayarlanır. Leela'ya ve yetkilendirme için roller verilir Administrator , Manager bu da kullanıcının adresinden yönetici sayfasına /private-manager-page erişmesine olanak tanır ancak konumundaki /private-editor-pagedüzenleyici sayfasına erişmez.

Uyarı

Test kullanıcı kodunun üretim ortamında çalışmasına asla izin verme. SeedData.InitializeAsync yalnızca dosyasındaki Development ortamda çağrılır Program :

if (builder.Environment.IsDevelopment())
{
    await using var scope = app.Services.CreateAsyncScope();
    await SeedData.InitializeAsync(scope.ServiceProvider);
}

Roller

Çerçeve tasarımı sorunu (dotnet/aspnetcore#50037) nedeniyle rol talepleri, uygulama kullanıcıları BlazorWasmAuth için kullanıcı talepleri oluşturmak üzere uç noktadan geri manage/info gönderilmez. Rol talepleri, kullanıcının projede GetAuthenticationStateAsync kimliği doğrulandıktan sonra (Identity/CookieAuthenticationStateProvider.cs) sınıfının yönteminde CookieAuthenticationStateProviderBackend ayrı bir istek aracılığıyla bağımsız olarak yönetilir.

CookieAuthenticationStateProvideriçinde, sunucu API projesinin /roles uç noktasına Backend bir rol isteği gönderilir. Yanıt, çağrılarak ReadAsStringAsync()bir dizeye okunur. JsonSerializer.Deserialize dizesini özel RoleClaim bir dizide seri durumdan çıkartır. Son olarak, talepler kullanıcının talep koleksiyonuna eklenir.

Sunucu API'sinin BackendProgram dosyasında uç noktayı En Az API yönetir /roles . talepleri RoleClaimTypeanonim bir türe seçilir ve ile TypedResults.Jsonprojeye geri dönmek BlazorWasmAuth için serileştirilir.

Rol uç noktası çağrılarak RequireAuthorizationyetkilendirme gerektirir. Güvenli sunucu API'leri uç noktaları için denetleyiciler için En Düşük API'leri kullanmamaya karar verirseniz, denetleyicilerde veya eylemlerde özniteliği ayarladığınızdan [Authorize] emin olun.

Etki alanları arası barındırma (aynı site yapılandırması)

Örnek uygulamalar, her iki uygulamayı da aynı etki alanında barındırmak için yapılandırılır. Uygulamayı uygulamadan BlazorWasmAuth farklı bir etki alanında barındırıyorsanızBackend, uygulamanın Program dosyasında (ConfigureApplicationCookie) yapılandıran cookie kodun Backend açıklamasını kaldırın. Varsayılan değerler şunlardır:

Değerleri şu şekilde değiştirin:

- options.Cookie.SameSite = SameSiteMode.Lax;
- options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
+ options.Cookie.SameSite = SameSiteMode.None;
+ options.Cookie.SecurePolicy = CookieSecurePolicy.Always;

Aynı site cookie ayarları hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Antiforgery desteği

Siteler Arası İstek Sahteciliği (CSRF) tehdidini azaltmak için yalnızca uygulamadaki Backend oturumu kapatma uç noktası (/logout) dikkat gerektirir.

Oturumu kapatma uç noktası, CSRF saldırılarını önlemek için boş bir gövdeyi denetler. Bir gövde gerektirerek, isteğin kimlik doğrulamasına cookieerişmenin tek yolu olan JavaScript'ten yapılması gerekir. Oturum kapatma uç noktasına form tabanlı bir POST tarafından erişilemiyor. Bu, kötü amaçlı bir sitenin kullanıcının oturumunu kapatmasını engeller.

Ayrıca, anonim erişimi önlemek için uç nokta yetkilendirme (RequireAuthorization) ile korunur.

İstemci BlazorWasmAuth uygulaması, isteğin gövdesinde boş bir nesne {} geçirmek için gereklidir.

Oturumu kapatma uç noktasının dışında, kötü amaçlı yazılımdan koruma azaltması yalnızca , multipart/form-dataveya text/plainolarak application/x-www-form-urlencodedkodlanmış sunucuya form verileri gönderirken gereklidir. Blazor çoğu durumda formlar için CSRF azaltmayı yönetir. Daha fazla bilgi için bkz . ASP.NET Core Blazor kimlik doğrulaması ve yetkilendirme ve ASP.NET Core Blazor formlara genel bakış.

Kodlanmış içerik ve CORS etkinleştirilmiş diğer sunucu API uç noktalarına (web API' sine) application/jsonyönelik istekler CSRF koruması gerektirmez. Bu nedenle, uygulamanın veri işleme (/data-processing) uç noktası için Backend CSRF koruması gerekmez. Hiçbir durumu değiştirmeyen bir GET uç noktası olduğundan roller (/roles) uç noktasının CSRF korumasına ihtiyacı yoktur.

Sorun giderme

Günlük Kaydı

Kimlik doğrulaması için hata ayıklama veya izleme günlüğünü etkinleştirmek için Blazor WebAssembly bkz . ASP.NET Çekirdek Blazor günlüğü.

Sık karşılaşılan hatalar

Her projenin yapılandırmasını denetleyin. URL'lerin doğru olduğunu onaylayın:

  • Backend Proje
    • appsettings.json
      • BackendUrl
      • FrontendUrl
    • Backend.http: Backend_HostAddress
  • BlazorWasmAuth Proje: wwwroot/appsettings.json
    • BackendUrl
    • FrontendUrl

Yapılandırma doğru görünüyorsa:

  • Uygulama günlüklerini analiz edin.

  • Tarayıcının BlazorWasmAuth geliştirici araçlarıyla uygulama ve Backend uygulama arasındaki ağ trafiğini inceleyin. Genellikle, soruna neyin neden olduğuna dair ipucu içeren tam bir hata iletisi veya ileti, istekte bulunduktan sonra arka uç uygulaması tarafından istemciye döndürülür. Geliştirici araçları kılavuzu aşağıdaki makalelerde bulunur:

  • Google Chrome (Google belgeleri)

  • Microsoft Edge

  • Mozilla Firefox (Mozilla belgeleri)

Belge ekibi makalelerdeki belge geri bildirimlerine ve hatalarına yanıt verir. Makalenin en altındaki Belge sorunu aç bağlantısını kullanarak bir sorun açın. Ekip ürün desteği sağlayamıyor. Bir uygulamada sorun gidermeye yardımcı olmak için çeşitli genel destek forumları mevcuttur. Aşağıdakileri öneririz:

Önceki forumlar Microsoft'a ait değildir veya microsoft tarafından denetlenmemektedir.

Güvenlikle ilgili olmayan, hassas olmayan ve gizli olmayan yeniden üretilebilir çerçeve hata raporları için ASP.NET Core ürün birimiyle ilgili bir sorun açın. Sorunun nedenini ayrıntılı bir şekilde araştırıp kendi başınıza ve bir genel destek forumundaki topluluğun yardımıyla çözene kadar ürün birimiyle ilgili bir sorun açmayın. Ürün birimi, basit yanlış yapılandırma veya üçüncü taraf hizmetleri içeren kullanım örnekleri nedeniyle bozulan tek tek uygulamalarda sorun gideremez. Bir rapor doğası gereği hassas veya gizliyse ya da saldırganların yararlanabileceği üründe olası bir güvenlik açığını açıklıyorsa bkz . Güvenlik sorunlarını ve hatalarını raporlama (dotnet/aspnetcore GitHub deposu).

Cookies ve site verileri

Cookies ve site verileri uygulama güncelleştirmeleri arasında kalıcı olabilir ve test ve sorun gidermeyi etkileyebilir. Uygulama kodu değişiklikleri, kullanıcı hesabı değişiklikleri veya uygulama yapılandırma değişiklikleri yaparken aşağıdakileri temizleyin:

  • Kullanıcı oturum açmaları cookie
  • Uygulamalar cookie
  • Önbelleğe alınan ve depolanan site verileri

Kalan cookies ve site verilerinin test ve sorun gidermeye engel olmasını önlemeye yönelik bir yaklaşım:

  • Tarayıcı yapılandırma
    • Tarayıcı her kapatıldığında tüm cookie ve site verilerini silmek üzere yapılandırabileceğiniz test için bir tarayıcı kullanın.
    • Uygulama, test kullanıcısı veya sağlayıcı yapılandırmasında yapılan herhangi bir değişiklik için tarayıcının el ile veya IDE tarafından kapatıldığını doğrulayın.
  • Visual Studio'da InPrivate veya Gizli modda tarayıcı açmak için özel bir komut kullanın:
    • Visual Studio'nun Çalıştır düğmesinden Gözat iletişim kutusunu açın.
    • Ekle düğmesini seçin.
    • Program alanında tarayıcınızın yolunu belirtin. Aşağıdaki yürütülebilir yollar Windows 10 için tipik yükleme konumlarıdır. Tarayıcınız farklı bir konumda yüklüyse veya Windows 10 kullanmıyorsanız, tarayıcının yürütülebilir dosyasının yolunu sağlayın.
      • Microsoft Edge: C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
      • Google Chrome: C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
      • Mozilla Firefox: C:\Program Files\Mozilla Firefox\firefox.exe
    • Bağımsız Değişkenler alanında, tarayıcının InPrivate veya Gizli modda açmak için kullandığı komut satırı seçeneğini belirtin. Bazı tarayıcılar uygulamanın URL'sini gerektirir.
      • Microsoft Edge: kullanın -inprivate.
      • Google Chrome: Yer --incognito --new-window {URL}tutucunun {URL} açıldığı URL olduğu yerde kullanın (örneğin, https://localhost:5001).
      • Mozilla Firefox: -private -url {URL}Yer tutucunun {URL} açıldığı URL olduğu yerde kullanın (örneğin, https://localhost:5001).
    • Kolay ad alanına bir ad girin. Örneğin, Firefox Auth Testing.
    • Tamam düğmesini seçin.
    • Bir uygulamayla yapılan her test yinelemesi için tarayıcı profilini seçmek zorunda kalmamak için Varsayılan Olarak Ayarla düğmesiyle profili varsayılan olarak ayarlayın.
    • Uygulama, test kullanıcısı veya sağlayıcı yapılandırmasında yapılan herhangi bir değişiklik için tarayıcının IDE tarafından kapatıldığını doğrulayın.

Uygulama yükseltmeleri

Çalışan bir uygulama, geliştirme makinesindeki .NET Core SDK'sını yükselttikten veya uygulama içindeki paket sürümlerini değiştirdikten hemen sonra başarısız olabilir. Bazı durumlarda, tutarsız paketler ana yükseltmeler yaparken bir uygulamayı bozabilir. Bu sorunların çoğu şu yönergeleri izleyerek düzeltilebilir:

  1. Komut kabuğundan yürüterek dotnet nuget locals all --clear yerel sistemin NuGet paket önbelleklerini temizleyin.
  2. Proje bin ve obj klasörlerini silin.
  3. Projeyi geri yükleyin ve yeniden oluşturun.
  4. Uygulamayı yeniden dağıtmadan önce sunucudaki dağıtım klasöründeki tüm dosyaları silin.

Not

Uygulamanın hedef çerçevesiyle uyumlu olmayan paket sürümlerinin kullanımı desteklenmez. Paket hakkında bilgi için NuGet Galerisi'ni veya FuGet Paket Gezgini'ni kullanın.

Kullanıcının taleplerini inceleme

Kullanıcı talepleri ile ilgili sorunları gidermek için, aşağıdaki UserClaims bileşen doğrudan uygulamalarda kullanılabilir veya daha fazla özelleştirme için temel görevi görür.

UserClaims.razor:

@page "/user-claims"
@using System.Security.Claims
@attribute [Authorize]

<PageTitle>User Claims</PageTitle>

<h1>User Claims</h1>

**Name**: @AuthenticatedUser?.Identity?.Name

<h2>Claims</h2>

@foreach (var claim in AuthenticatedUser?.Claims ?? Array.Empty<Claim>())
{
    <p class="claim">@(claim.Type): @claim.Value</p>
}

@code {
    [CascadingParameter]
    private Task<AuthenticationState>? AuthenticationState { get; set; }

    public ClaimsPrincipal? AuthenticatedUser { get; set; }

    protected override async Task OnInitializedAsync()
    {
        if (AuthenticationState is not null)
        {
            var state = await AuthenticationState;
            AuthenticatedUser = state.User;
        }
    }
}

Ek kaynaklar