Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Note
Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.
ASP.NET Core Blazor WebAssembly segítségével az önálló Identity-alkalmazások a cikk útmutatásait követve biztosíthatók.
A regisztráció, a bejelentkezés és a kijelentkezés végpontjai
Ahelyett, hogy az ASP.NET Core Identity által biztosított alapértelmezett felhasználói felületet használná, amely a Blazor Pagesen alapuló Razor alkalmazásokhoz készült, hívja meg a MapIdentityApi-at egy háttér API-ban, hogy JSON API-végpontokat adjon hozzá a felhasználók regisztrációjához és bejelentkezéséhez az ASP.NET Core Identitysegítségével. Identity API-végpontok olyan speciális funkciókat is támogatnak, mint a kéttényezős hitelesítés és az e-mail-ellenőrzés.
Az ügyfélen hívja meg a /register végpontot, hogy regisztráljon egy felhasználót az e-mail-címével és jelszavával:
using var result = await _httpClient.PostAsJsonAsync(
"register", new
{
email,
password
});
Az ügyfélen jelentkezzen be egy felhasználó cookie hitelesítés használatával a /login végponton keresztül, és állítsa be a useCookies lekérdezési sztringet true-ra.
using var result = await _httpClient.PostAsJsonAsync(
"login?useCookies=true", new
{
email,
password
});
A háttérkiszolgáló API cookie hitelesítést hoz létre a hitelesítéskészítő AddIdentityCookies hívásával:
builder.Services
.AddAuthentication(IdentityConstants.ApplicationScheme)
.AddIdentityCookies();
Jogkivonat-hitelesítés
Natív és mobil helyzetekben, ahol egyes ügyfelek nem támogatják a cookie-kat, a bejelentkezési API biztosít egy paramétert a tokenek lekéréséhez.
Warning
Azt javasoljuk, hogy tokenek helyett használjon cookie-kat a böngészőalapú alkalmazásokhoz, mert a böngésző anélkül kezeli a cookie-kat, hogy azokat JavaScript-nek adnánk ki. Ha úgy dönt, hogy jogkivonatalapú biztonságot használ a webalkalmazásokban, önnek kell gondoskodnia arról, hogy a jogkivonatok biztonságban legyenek.
A rendszer kibocsát egy saját, az ASP.NET Core Identity platformhoz tartozó token-t, amely a későbbi kérések hitelesítésére használható. A jogkivonatot a Authorization fejlécben kell átadni hordozó jogkivonatként. Egy frissítő tokent is biztosítanak. Ez a jogkivonat lehetővé teszi, hogy az alkalmazás új jogkivonatot kérjen, amikor a régi lejár anélkül, hogy a felhasználót újra be kell jelentkeznie.
A tokenek nem szabványos JSON Web Token-ek (JWT-k). Az egyéni tokenek használata szándékos, mivel a beépített Identity API elsősorban egyszerű helyzetekhez készült. A token opció nem egy teljes körű identitásszolgáltató vagy jogkivonat-kiszolgáló, hanem inkább egy alternatíva a cookie lehetőséggel szemben azoknak az ügyfeleknek, akik nem tudnak sütiket használni.
Az alábbi útmutató megkezdi a tokenalapú hitelesítés implementálását a bejelentkezési API-val. Az implementáció elvégzéséhez egyéni kód szükséges. További információ: Az Identity használata a SPÁ-khoz tartozó webes API-háttérrendszer biztonságossá tételéhez.
Ahelyett, hogy a háttérkiszolgáló API cookie hitelesítést hoz létre a hitelesítéskészítő AddIdentityCookies hívásával, a kiszolgáló API beállítja a tulajdonosi jogkivonat hitelesítését a AddBearerToken bővítménymetódussal. Adja meg a séma definiálását a bearer hitelesítési tokenekhez a IdentityConstants.BearerSchemehasználatával.
A Backend/Program.csmódosítsa a hitelesítési szolgáltatásokat és a konfigurációt a következőre:
builder.Services
.AddAuthentication()
.AddBearerToken(IdentityConstants.BearerScheme);
Távolítsa el a BlazorWasmAuth/Identity/CookieAuthenticationStateProvider.cs lekérdezési sztring paramétert a useCookiesLoginAsyncCookieAuthenticationStateProvider metódusában:
- login?useCookies=true
+ login
Ezen a ponton egyéni kódot kell megadnia a kliens AccessTokenResponse elemzéséhez, valamint a hozzáférési és frissítési tokenek kezeléséhez. További információ: Az Identity használata a SPÁ-khoz tartozó webes API-háttérrendszer biztonságossá tételéhez.
További Identity forgatókönyvek
A Blazor dokumentációs készlete által lefedett forgatókönyvek:
- fiók megerősítése, jelszókezelés és helyreállítási kódok
- kéttényezős hitelesítés (2FA) TOTP-hitelesítő alkalmazással
Az API által biztosított további Identity forgatókönyvekről további információért lásd: Használja a Identity-t a webes API háttérrendszer védelmére SPA-khoz.
- Kijelölt végpontok biztonságossá tétele
- Felhasználói adatok kezelése
Bizalmas adatok és hitelesítő adatok megőrzése biztonságos hitelesítési folyamatok használatával
Warning
Ne tárolja az alkalmazás titkos kulcsait, kapcsolati sztringeket, hitelesítő adatokat, jelszavakat, személyes azonosítószámokat (PIN-eket), titkos C#/.NET-kódot vagy titkos kulcsokat/jogkivonatokat az ügyféloldali kódban, amely mindig nem biztonságos. Tesztelési/előkészítési és éles környezetekben a kiszolgálóoldali Blazor kód- és webes API-knak biztonságos hitelesítési folyamatokat kell használniuk, amelyek nem őrzik meg a hitelesítő adatokat a projektkódban vagy a konfigurációs fájlokban. A helyi fejlesztési tesztelésen kívül javasoljuk, hogy kerülje a környezeti változók bizalmas adatok tárolására való használatát, mivel a környezeti változók nem a legbiztonságosabb megközelítések. A helyi fejlesztési teszteléshez a Secret Manager eszköz ajánlott bizalmas adatok védelméhez. További információ: Bizalmas adatok és hitelesítő adatok biztonságos karbantartása.
Mintaalkalmazások
Ebben a cikkben a mintaalkalmazások referenciaként szolgálnak olyan különálló Blazor WebAssembly alkalmazásokhoz, amelyek egy háttérbeli webes API-val férnek hozzá ASP.NET Core Identity. A bemutató két alkalmazást tartalmaz:
-
Backend: Egy háttérbeli webes API-alkalmazás, amely egy felhasználói identitástárat tart fenn ASP.NET Core Identityszámára. -
BlazorWasmAuth: Egy különálló Blazor WebAssembly előtéralkalmazás felhasználói hitelesítéssel.
A mintaalkalmazásokat az adattár gyökérmappájából a legújabb verziómappán keresztül érheti el az alábbi hivatkozással. A minták a .NET 8-at vagy újabb verziót tartalmazzák. A mintaalkalmazások futtatásának lépéseit a README mappában található BlazorWebAssemblyStandaloneWithIdentity fájlban találja.
A mintakód megtekintése vagy letöltése (hogyan tölthető le)
Háttérbeli webes API-alkalmazáscsomagok és -kód
A háttérbeli webes API-alkalmazás egy felhasználói identitástárolót tart fenn ASP.NET Core Identityszámára.
Packages
Az alkalmazás a következő NuGet-csomagokat használja:
Microsoft.AspNetCore.Identity.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.InMemoryNSwag.AspNetCore
Ha az alkalmazás egy másik EF Core adatbázis-szolgáltatót szeretne használni az in-memory (memóriabeli) szolgáltató helyett, ne hozzon létre csomaghivatkozást az alkalmazásban a Microsoft.EntityFrameworkCore.InMemory-re.
Az alkalmazás projektfájljában (.csproj) az invariáns globalizáció van beállítva.
Mintaalkalmazás-kód
Alkalmazás beállításai a backend és frontend URL-címek konfigurálása:
-
Backendalkalmazás (BackendUrl):https://localhost:7211 -
BlazorWasmAuthalkalmazás (FrontendUrl):https://localhost:7171
A Backend.http fájl használható az időjárási adatkérés teszteléséhez. Vegye figyelembe, hogy a végpont teszteléséhez a BlazorWasmAuth alkalmazásnak futnia kell, a végpont pedig a fájlba van kódolva. További információ: .http fájlok használata a Visual Studio 2022-ben.
Az alábbi beállítás és konfiguráció az alkalmazás Program fájljában található.
A cookie hitelesítéssel rendelkező felhasználói identitás AddAuthentication és AddIdentityCookiesmeghívásával adható hozzá. Az engedélyezési ellenőrzésekhez szükséges szolgáltatásokat a AddAuthorizationBuilderhívása bővíti.
Csak bemutatókhoz ajánlott, az alkalmazás a EF Core memóriabeli adatbázis-szolgáltató használja az adatbázis-környezet regisztrációhoz (AddDbContext). A memóriabeli adatbázis-szolgáltató megkönnyíti az alkalmazás újraindítását és a regisztrációs és bejelentkezési felhasználói folyamatok tesztelését. Minden futtatás egy friss adatbázissal kezdődik, de az alkalmazás tartalmazza tesztfelhasználói vetőkódot, amelyet a cikk későbbi részében ismertetünk. Ha az adatbázist SQLite-ra változtatják, a felhasználók munkamenetek között el lesznek mentve, de az adatbázist a migrációksegítségével kell létrehozni, ahogyan az EF Core első lépések oktatóanyagában†. Az éles kódhoz más relációs szolgáltatókat is használhat, például az SQL Servert.
Note
†A EF Core első lépések oktatóanyaga PowerShell-parancsokkal hajtja végre az adatbázis-migrálásokat a Visual Studio használatakor. A Visual Studióban alternatív módszer a Csatlakoztatott szolgáltatások felhasználói felületének használata:
A Megoldáskezelőbenkattints duplán a Csatlakoztatott szolgáltatásokelemre. Az Szolgáltatásfüggőségek részben, az > alatt jelölje ki a három pontot (), majd válassza az ... lehetőséget migrálás létrehozásához, vagy az Adatbázis frissítése opciót az adatbázis frissítéséhez.
Konfigurálja a Identity a EF Core adatbázis használatára, és tegye elérhetővé a Identity végpontokat a AddIdentityCore, AddEntityFrameworkStoresés AddApiEndpointshívásán keresztül.
Létrejön egy forrásközi erőforrás-megosztási (CORS) szabályzat, amely lehetővé teszi az előtér- és háttéralkalmazások kéréseit. A tartalék URL-címek akkor vannak konfigurálva a CORS-szabályzathoz, ha az alkalmazásbeállítások nem adják meg őket:
-
Backendalkalmazás (BackendUrl):https://localhost:5001 -
BlazorWasmAuthalkalmazás (FrontendUrl):https://localhost:5002
A projekt csomagokat és konfigurációt tartalmaz OpenAPI-dokumentumok létrehozásához.
A Swagger/OpenAPI szolgáltatásai és végpontjai a webes API dokumentációjához és fejlesztési teszteléséhez tartoznak. További információ az NSwag-ről: Az NSwag használatának első lépései és ASP.NET Core.
A felhasználói szerepkör-jogcímeket a rendszer egy minimális API- küldi el a /roles végponton.
Az útvonalak a Identity végpontokhoz a MapIdentityApi<AppUser>()meghívásával vannak leképezve.
A köztes szoftverfolyamatban egy kijelentkezésvégpont (/Logout) van konfigurálva a felhasználók kijelentkeztetésére.
A végpont védelméhez adja hozzá a RequireAuthorization bővítménymetódust az útvonaldefinícióhoz. Vezérlő esetén adja hozzá a [Authorize] attribútumot a vezérlőhöz vagy a művelethez.
További információért a DbContext-példányok inicializálásának és konfigurációjának alapvető mintáiról, lásd a dokumentációban a EF Core részt.
Előtérbeli önálló Blazor WebAssembly alkalmazáscsomagok és -kódok
A különálló Blazor WebAssembly előtéralkalmazás bemutatja a felhasználók hitelesítését és a privát weblapok elérésének engedélyezését.
Packages
Az alkalmazás a következő NuGet-csomagokat használja:
Microsoft.AspNetCore.Components.WebAssembly.AuthenticationMicrosoft.Extensions.HttpMicrosoft.AspNetCore.Components.WebAssemblyMicrosoft.AspNetCore.Components.WebAssembly.DevServer
Mintaalkalmazás-kód
A Models mappa az alkalmazás modelljeit tartalmazza:
-
FormResult(Identity/Models/FormResult.cs): Bejelentkezésre és regisztrációra adott válasz. -
UserInfo(Identity/Models/UserInfo.cs): Felhasználói adatok az identitásvégpontról a jogcímek létrehozásához.
A IAccountManagement felület (Identity/CookieHandler.cs) biztosít fiókkezelési szolgáltatásokat.
A CookieAuthenticationStateProvider osztály (Identity/CookieAuthenticationStateProvider.cs) kezeli a cookie-alapú hitelesítés állapotát, és biztosítja a IAccountManagement felület által leírt fiókkezelési szolgáltatás implementációit. A LoginAsync metódus explicit módon engedélyezi a cookie hitelesítést a useCookiestrue lekérdezési sztring értékén keresztül. Az osztály a hitelesített felhasználók szerepkör-jogcímeinek létrehozását is kezeli.
A CookieHandler osztály (Identity/CookieHandler.cs) biztosítja, hogy cookie hitelesítő adatok minden kéréssel együtt elküldve legyenek a háttérbeli webes API-nak, amely kezeli a Identity és karbantartja a Identity adattárat.
A wwwroot/appsettings.file háttér- és előtérbeli URL-végpontokat biztosít.
A App összetevő kaszkádolt paraméterként teszi elérhetővé a hitelesítési állapotot. További információ: ASP.NET Core Blazor hitelesítési és engedélyezési.
A MainLayout összetevő és NavMenu összetevő a AuthorizeView összetevő használatával szelektíven jeleníti meg a tartalmat a felhasználó hitelesítési állapota alapján.
A következő összetevők kezelik a gyakori felhasználói hitelesítési feladatokat, IAccountManagement szolgáltatások használatával:
-
Registerösszetevő (Components/Identity/Register.razor) -
Loginösszetevő (Components/Identity/Login.razor) -
Logoutösszetevő (Components/Identity/Logout.razor)
A PrivatePage összetevő (Components/Pages/PrivatePage.razor) hitelesítést igényel, és megjeleníti a felhasználó jogcímeit.
A szolgáltatásokat és a konfigurációt a Program fájl (Program.cs)biztosítja:
- A cookie kezelő hatókörrel rendelkező szolgáltatásként van regisztrálva.
- Az engedélyezési szolgáltatások regisztrálva vannak.
- Az egyéni hitelesítési állapotszolgáltató hatóköralapú szolgáltatásként van regisztrálva.
- A fiókkezelési felület (
IAccountManagement) regisztrálva van. - Az alap gazdagép URL-címe egy regisztrált HTTP-ügyfélpéldányhoz van konfigurálva.
- Az alap háttérrendszer URL-címe egy regisztrált HTTP-ügyfélpéldányhoz van konfigurálva, amely a háttér webes API-val való hitelesítéshez használatos. A HTTP-ügyfél a cookie kezelőjével gondoskodik arról, hogy cookie hitelesítő adatok minden kéréssel együtt legyenek elküldve.
Hívja meg AuthenticationStateProvider.NotifyAuthenticationStateChanged, amikor a felhasználó hitelesítési állapota megváltozik. Lásd például a LoginAsyncLogoutAsync és CookieAuthenticationStateProvider metódusait.
Warning
A AuthorizeView összetevő szelektíven jeleníti meg a felhasználói felület tartalmát attól függően, hogy a felhasználó jogosult-e rá. Az Blazor WebAssembly összetevőbe helyezett AuthorizeView-alkalmazások összes tartalma hitelesítés nélkül felderíthető, ezért a sikeres hitelesítés után bizalmas tartalmakat kell beszerezni egy háttérkiszolgáló-alapú webes API-ból. További információ:
Felhasználói vetés bemutatása tesztelés céljából
A SeedData osztály (SeedData.cs) bemutatja, hogyan hozhat létre tesztfelhasználókat fejlesztésre. A Leela nevű tesztfelhasználó a leela@contoso.come-mail-címmel jelentkezik be az alkalmazásba. A felhasználó jelszava Passw0rd!. Leela Administrator és Manager szerepkörrel rendelkezik az engedélyezéshez, amely lehetővé teszi a felhasználó számára, hogy hozzáférjen a kezelőoldalhoz /private-manager-page, de nem a szerkesztőoldalt /private-editor-page.
Warning
Soha ne engedélyezze a felhasználói kód tesztelését éles környezetben.
SeedData.InitializeAsync csak a Development fájl Program környezetében hívjuk meg:
if (builder.Environment.IsDevelopment())
{
await using var scope = app.Services.CreateAsyncScope();
await SeedData.InitializeAsync(scope.ServiceProvider);
}
Roles
A szerepkörjogcímeket a rendszer nem küldi vissza a manage/info végpontról, hogy felhasználói jogcímeket hozzon létre a BlazorWasmAuth alkalmazás felhasználói számára. A szerepkör-jogcímek kezelése külön kéréssel történik a GetAuthenticationStateAsyncCookieAuthenticationStateProvider metódusában, miután a felhasználó hitelesítése megtörtént a Identity/CookieAuthenticationStateProvider.cs projektben.
A CookieAuthenticationStateProvideresetében egy szerepkör-kérést tesznek a /roles szerver API projekt Backend végpontjára. A válasz ReadAsStringAsync() meghívásával sztringként kerül beolvasásra.
JsonSerializer.Deserialize deszerializálja a karakterláncot egy saját RoleClaim tömbbé. Végül a rendszer hozzáadja a jogcímeket a felhasználó jogcímgyűjteményéhez.
A Backend kiszolgálói API Program fájljában egy Minimal API kezeli a /roles végpontot. A RoleClaimType állítások névtelen típussá vannak kiválasztva, szerializálva és visszaküldésre kerülnek a projekthez BlazorWasmAuth.
A szerepkörök végpontja RequireAuthorizationmeghívásával igényel engedélyezést. Ha úgy dönt, hogy nem használ minimális API-kat a vezérlők helyett a biztonságos kiszolgálói API-végpontokhoz, mindenképpen állítsa be a [Authorize] attribútumot vezérlőkre vagy műveletekre.
Különböző domain-ek hosztolása (azonos webhely konfiguráció)
A mintaalkalmazások mindkét alkalmazás ugyanazon a tartományban való üzemeltetésére vannak konfigurálva. Ha a Backend alkalmazást a BlazorWasmAuth alkalmazástól eltérő tartományban üzemelteti, bontsa ki a cookie (ConfigureApplicationCookie) konfiguráló kódot a Backend alkalmazás Program fájljában. Az alapértelmezett értékek a következők:
- Azonos oldali mód: SameSiteMode.Lax
- Biztonságos szabályzat: CookieSecurePolicy.SameAsRequest
Módosítsa az értékeket a következőre:
- Azonos oldali mód: SameSiteMode.None
- Biztonságos szabályzat: CookieSecurePolicy.Always
- options.Cookie.SameSite = SameSiteMode.Lax;
- options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
+ options.Cookie.SameSite = SameSiteMode.None;
+ options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
Az azonos webhely cookie beállításairól az alábbi forrásokban talál további információt:
-
Set-Cookie:
SameSite=<samesite-value>(MDN-dokumentáció) - cookie-k: HTTP állapotkezelési mechanizmus (RFC 6265-ös tervezet, 4.1. szakasz)
Antiforgery támogatás
Csak a /logout alkalmazás bejelentkezési végpontja (Backend) igényel figyelmet a helyek közötti kérelemhamisítás (CSRF)veszélyének enyhítésére.
A kijelentkezés végpontja egy üres törzset keres a CSRF-támadások megelőzése érdekében. Mivel törzset igényel, a kérést JavaScriptből kell elvégezni, ami az egyetlen módja a cookiehitelesítés elérésének. A kijelentkezési végpont nem érhető el űrlapalapú POST használatával. Ez megakadályozza, hogy egy rosszindulatú webhely kijelentkeztetse a felhasználót.
Ezenkívül a végpontot hitelesítés (RequireAuthorization) védi a névtelen hozzáférés megakadályozása érdekében.
Az BlazorWasmAuth ügyfélalkalmazásnak csak egy üres objektumot {} kell átadnia a kérés törzsébe.
A kijelentkezési végponton kívül az antivisszaélés elleni csak akkor szükséges, ha olyan űrlapadatokat küld a szervernek, amelyek application/x-www-form-urlencoded, multipart/form-datavagy text/plainformátumúak.
Blazor a legtöbb esetben kezeli az űrlapokra vonatkozó CSRF-kockázatcsökkentést. További információ: ASP.NET Core Blazor hitelesítési és engedélyezési és ASP.NET Core Blazor-űrlapok áttekintése.
A application/jsonkódolt tartalommal és CORS- engedélyezett más kiszolgálói API-végpontokra (webes API) irányuló kérések nem igényelnek CSRF-védelmet. Ezért nincs szükség CSRF-védelemre az Backend alkalmazás adatfeldolgozási (/data-processing) végpontja számára. A szerepkörök (/roles) végpontjának nincs szüksége CSRF-védelemre, mert az egy GET végpont, amely semmilyen állapotot nem módosít.
Troubleshoot
Logging
Ha engedélyezni szeretné a hibakeresést vagy a nyomkövetési naplózást Blazor WebAssembly hitelesítéshez, tekintse meg ASP.NET Core Blazor naplózásicímű témakört.
Gyakori hibák
Ellenőrizze az egyes projektek konfigurációját. Ellenőrizze, hogy az URL-címek helyesek-e:
-
Backendprojektappsettings.jsonBackendUrlFrontendUrl
-
Backend.http:Backend_HostAddress
-
BlazorWasmAuthprojekt:wwwroot/appsettings.jsonBackendUrlFrontendUrl
Ha a konfiguráció helyesnek tűnik:
Alkalmazásnaplók elemzése.
Vizsgálja meg a
BlazorWasmAuthalkalmazás ésBackendalkalmazás közötti hálózati forgalmat a böngésző fejlesztői eszközeivel. A háttéralkalmazás a kérés elküldése után gyakran egy pontos hibaüzenetet vagy egy, a problémát okozó nyomokat tartalmazó üzenetet ad vissza az ügyfélnek. A fejlesztői eszközökkel kapcsolatos útmutatást a következő cikkekben találja:Google Chrome (Google-dokumentáció)
Mozilla Firefox (Mozilla-dokumentáció)
A dokumentációs csapat válaszol a cikkekben szereplő dokumentumokkal kapcsolatos visszajelzésekre és hibákra. Nyisson meg egy problémát a cikk alján található
Az előző fórumok nem a Microsoft tulajdonában vagy ellenőrzése alatt állnak.
A nem biztonsági, nem érzékeny és nem bizalmas, reprodukálható keretrendszeri hibajelentések esetén nyisson meg egy jelentést az ASP.NET Core termékegységnél. Ne nyisson meg egy problémát a termékegységben, amíg nem vizsgálja meg alaposan a probléma okát, és nem tudja önállóan és a közösség segítségével megoldani a problémát egy nyilvános támogatási fórumon. A termékegység nem tudja elhárítani a külső szolgáltatásokat érintő egyszerű helytelen konfiguráció vagy használati esetek miatt hibásan működő egyes alkalmazásokat. Ha egy jelentés bizalmas jellegű, vagy a kiberbűnözők által kihasználható termék biztonsági hibáját írja le, tekintse meg Biztonsági problémák és hibák jelentésével (dotnet/aspnetcore GitHub-adattár).
Cookie-k és webhelyadatok
A cookie-k és a webhelyadatok az alkalmazásfrissítések során is megmaradhatnak, és zavarhatják a tesztelést és a hibaelhárítást. Törölje az alábbiakat az alkalmazáskód, a felhasználói fiók vagy az alkalmazáskonfiguráció módosításakor:
- Felhasználói bejelentkezési cookie-k
- Alkalmazás cookie-k
- Gyorsítótárazott és tárolt webhelyadatok
Az egyik módszer a megmaradt cookie-k és webhelyadatok tesztelést és hibaelhárítást zavaró hatásának megelőzésére a következő:
- Böngésző konfigurálása
- Használjon egy böngészőt a teszteléshez, amely konfigurálható az összes cookie és webhelyadatok törlésére minden alkalommal, amikor a böngésző bezárul.
- Győződjön meg arról, hogy a böngésző manuálisan vagy az IDE által bezárva van az alkalmazás, a tesztfelhasználó vagy a szolgáltató konfigurációjának bármilyen módosításához.
- Egyéni paranccsal nyisson meg egy böngészőt InPrivate vagy Inkognitó módban a Visual Studióban:
- Nyissa meg a Böngészés párbeszédpanelt a Visual Studio Futtatás gombjából megnyitva.
- Válassza a Hozzáadás gombot.
- Adja meg a böngésző elérési útját a Program mezőben. A következő végrehajtható elérési utak a Windows 10 tipikus telepítési helyei. Ha a böngésző más helyen van telepítve, vagy nem Windows 10-et használ, adja meg a böngésző végrehajtható fájljának elérési útját.
- 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
- Microsoft Edge:
- Az Argumentumok mezőben adja meg azt a parancssori beállítást, amelyet a böngésző inPrivate vagy Inkognitó módban való megnyitáshoz használ. Egyes böngészőkben az alkalmazás URL-címe szükséges.
- Microsoft Edge: A
-inprivatehasználata. - Google Chrome: Használja a
--incognito --new-window {URL}, ahol a{URL}helyőrző a megnyitni kívánt URL-cím (példáulhttps://localhost:5001). - Mozilla Firefox: Használja a
-private -url {URL}, ahol a{URL}helyőrző a megnyitni kívánt URL-cím (példáulhttps://localhost:5001).
- Microsoft Edge: A
- Adjon meg egy nevet a Felhasználóbarát név mezőben. Például
Firefox Auth Testing. - Válassza az OK gombot.
- Ha el szeretné kerülni, hogy az alkalmazással végzett tesztelés minden iterációja esetében ki kell választania a böngészőprofilt, állítsa be a profilt alapértelmezettként az Alapértelmezett gombbal.
- Győződjön meg arról, hogy az IDE bezárja a böngészőt az alkalmazás, a tesztfelhasználó vagy a szolgáltató konfigurációjának bármilyen módosításához.
Alkalmazásfrissítések
A működő alkalmazások a .NET SDK fejlesztői gépen való frissítése vagy az alkalmazás csomagverzióinak módosítása után azonnal meghiúsulhatnak. Bizonyos esetekben az inkognitó csomagok megszakíthatják az alkalmazásokat a nagyobb frissítések végrehajtásakor. A legtöbb ilyen probléma az alábbi utasítások követésével javítható:
- Törölje a helyi rendszer NuGet-csomaggyorsítótárait a parancshéjban a
dotnet nuget locals all --clearvégrehajtásával. - Törölje a projekt
binésobjmappáit. - Állítsa vissza és építse újra a projektet.
- Az alkalmazás ismételt üzembe helyezése előtt törölje a kiszolgáló üzembehelyezési mappájában lévő összes fájlt.
Note
Az alkalmazás cél-keretrendszerével nem kompatibilis csomagverziók használata nem támogatott. A csomaggal kapcsolatos információkért használja a NuGet Gallery-t.
A felhasználó jogcímeinek vizsgálata
A felhasználói jogcímekkel kapcsolatos problémák elhárításához az alábbi UserClaims összetevő használható közvetlenül az alkalmazásokban, vagy szolgálhat a további testreszabás alapjául.
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;
}
}
}