Gyakorlat – Identitástámogatás konfigurálása
Az Identity testreszabás nélkül, azonnal használatra kész. Ebben a leckében az identitás egy meglévő ASP.NET Core Razor Pages-projekthez lesz hozzáadva.
A kezdőprojekt megnyitása
Az ajánlott GitHub Codespace használatához keresse meg a MicrosoftDocs/mslearn-secure-aspnet-core-identity adattár kódtereit. Hozzon létre egy új Codespace-t az main
ág használatával, majd ugorjon az alkalmazás felfedezése gombra.
Helyi dev container használatához kövesse az alábbi lépéseket:
A Visual Studio Code ablakában nyomja le az F1 billentyűt a parancskatalógus megnyitásához. Keresse meg és válassza ki a Dev-Containers: Clone Repository in Container Volume(Tárolókötet klónozása) lehetőséget.
Adja meg a következő adattár URL-címét:
https://github.com/MicrosoftDocs/mslearn-secure-aspnet-core-identity
. Válassza ki azmain
ágat. A Visual Studio Code létrehozza a Dev Containert. Fogadja el az ajánlott bővítmények telepítésére vonatkozó utasításokat.Ugrás az alkalmazás felfedezésére.
Helyi fejlesztési környezet használatához kövesse az alábbi lépéseket:
Egy terminálablakban futtassa a következő parancsot a kezdőprojekt beszerzéséhez:
git clone https://github.com/MicrosoftDocs/mslearn-secure-aspnet-core-identity
Váltson a forráskód könyvtárra, és indítsa el a Visual Studio Code-ot:
cd mslearn-secure-aspnet-core-identity code .
Megnyílik a Visual Studio Code. Fogadja el az ajánlott bővítmények telepítésére vonatkozó utasításokat, de NE válassza a Tárolóban való újranyitás lehetőséget, ha a rendszer kéri. Folytassa a következő lépésekkel.
Az alkalmazás bemutatása
A projekt betöltése után a Ctrl Shift`+ billentyűkombinációt+lenyomva nyisson meg egy új terminálpanelt.
Az új terminálpanelen állítsa be a tartózkodási helyét a RazorPagesPizza könyvtárra:
cd RazorPagesPizza
Az Explorer panelen bontsa ki a RazorPagesPizza könyvtárat a kód megtekintéséhez. A RazorPagesPizza a projektkönyvtár. A folytatás során tegyük fel, hogy a modulban tárgyalt összes elérési út ehhez a helyhez képest van.
Futtassuk az alkalmazást a gyors bevezetéshez.
A terminálpanelen hozza létre a projektet, és futtassa az alkalmazást:
dotnet run
Figyelje meg a terminál kimenetében megjelenő URL-címet. Például:
https://localhost:7192
.Nyissa meg az alkalmazást a böngészőben az URL-cím kiválasztásával a Ctrl billentyűt+lenyomva tartva.
Fontos
Ha a dev containert a helyi Dockerben használja, a tárolón belülről származó SSL-tanúsítványt a böngésző nem fogja megbízhatónak minősíteni. A webalkalmazás megtekintéséhez tegye az alábbiak egyikét :
- Hagyja figyelmen kívül a tanúsítványhibát. Ha a Microsoft Edge-t használja, válassza a Speciális és a Folytatás a localhost (nem ajánlott) lehetőséget. A részletek böngészőnként eltérőek.
- Mentse a tanúsítványt, és adja hozzá a megbízható hitelesítésszolgáltatókhoz.
- Importálja a meglévő fejlesztési tanúsítványt a tárolóba. További információ: ./devcontainer/devcontainter.json.
Ismerkedjen meg a webalkalmazással a böngészőben. A fejléc hivatkozásainak használata:
- Navigálás a Pizza listára
- Navigálás a kezdőlapon
Figyelje meg, hogy nincs szükség hitelesítésre.
Az alkalmazás leállításához nyomja le a Ctrl C billentyűkombinációt+a terminálablakban.
ASP.NET Core Identity hozzáadása a projekthez
Az alapértelmezett identitás-implementáció parancssori eszközökkel dotnet
adható hozzá.
Telepítse az ASP.NET Core kódgenerálót:
dotnet tool install dotnet-aspnet-codegenerator --version 8.0.* --global
Az állványzat egy .NET-eszköz, amely:
- Az alapértelmezett identitásösszetevők a projekthez való hozzáadására szolgál.
- Engedélyezi az identitás felhasználói felületének összetevőinek testreszabását a következő leckében.
- Ebben a modulban hívjuk
dotnet aspnet-codegenerator
meg.
Adja hozzá a projekthez a következő NuGet-csomagot:
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --version 8.0.* dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore --version 8.0.* dotnet add package Microsoft.AspNetCore.Identity.UI --version 8.0.* dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0.* dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 8.0.* dotnet add package Microsoft.EntityFrameworkCore.Tools --version 8.0.*
A csomagok a generáló által használandó kódgenerálási sablonokat és függőségeket telepíti.
Tipp.
A rendelkezésre álló generálók megtekintéséhez:
- A parancshéjban futtassa a
dotnet aspnet-codegenerator -h
parancsot. - A Visual Studióban kattintson a jobb gombbal a projektre a Megoldáskezelőben, majd válassza a Hozzáadás>Új generált elem ehetőséget.
- A parancshéjban futtassa a
Használja a generálót az alapértelmezett Identity-összetevők projekthez adására. Futtassa az alábbi parancsot a terminálban:
dotnet aspnet-codegenerator identity --useDefaultUI --dbContext RazorPagesPizzaAuth --userClass RazorPagesPizzaUser
A fenti parancsban:
- Az identitás-keretrendszer projekthez való hozzáadásához használt generátor
identity
. - A
--useDefaultUI
beállítás azt jelzi, hogy a rendszer az alapértelmezett felhasználói felületi elemeket tartalmazó Razor-osztálytárat (RCL) használja. A bootstrap az összetevők stílusára szolgál. - A
--dbContext
beállítás megadja a létrehozandó EF Core-adatbázis környezeti osztályának nevét. - A
--userClass
beállítás megadja a létrehozandó felhasználói osztály nevét. Az alapértelmezett felhasználói osztály aIdentityUser
következő, de mivel a felhasználói osztály egy későbbi egységben van kibővítve, a rendszer egy egyéni, elnevezettRazorPagesPizzaUser
felhasználói osztályt ad meg. AzRazorPagesPizzaUser
osztály a következőbőlIdentityUser
származik: .
A RazorPagesPizza könyvtárban a következő Areas könyvtárstruktúra jelenik meg:
- Areas
- Identity (ugyanazon a sorban jelenik meg, mint a Területek)
- Data
- RazorPagesPizzaAuth.cs
- RazorPagesPizzaUser.cs
- Pages
- _ValidationScriptsPartial.cshtml
- _ViewStart.cshtml
- Data
- Identity (ugyanazon a sorban jelenik meg, mint a Területek)
Tipp.
Ha a Areas könyvtár nem jelenik meg automatikusan az Explorer panelen, válassza az Explorer panel MSLEARN-SECURE-ASPNET-CORE-IDENTITY fejlécének Frissítéskezelő gombját.
A területek módot kínálnak egy ASP.NET Core-webalkalmazás kisebb funkcionális csoportokra bontására.
Az állványzat a következő kiemelt módosításokat is végrehajtotta a Program.cs, az olvashatóság érdekében újraformázva:
using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using RazorPagesPizza.Areas.Identity.Data; var builder = WebApplication.CreateBuilder(args); var connectionString = builder.Configuration.GetConnectionString("RazorPagesPizzaAuthConnection") ?? throw new InvalidOperationException("Connection string 'RazorPagesPizzaAuthConnection' not found."); builder.Services.AddDbContext<RazorPagesPizzaAuth>(options => options.UseSqlServer(connectionString)); builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<RazorPagesPizzaAuth>(); // Add services to the container. builder.Services.AddRazorPages(); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.Run();
A fenti kód a következőket végzi el:
- A
RazorPagesPizzaAuthConnection
kapcsolati sztring appsettings.json olvas be. - A névvel ellátott
RazorPagesPizzaAuth
EF Core-adatbázis környezeti osztálya a kapcsolati sztring van konfigurálva. - Regisztrálja az identitásszolgáltatásokat, köztük az alapértelmezett felhasználói felületet, a jogkivonat-szolgáltatókat és a cookie-alapú hitelesítést.
.AddDefaultIdentity<IdentityUser>
az identity services az alapértelmezett felhasználói modell használatára utasítja.- A lambda kifejezés
options => options.SignIn.RequireConfirmedAccount = true
azt határozza meg, hogy a felhasználóknak meg kell erősíteniük az e-mail-fiókjukat. .AddEntityFrameworkStores<RazorPagesPizzaAuth>()
azt határozza meg, hogy az Identity az alapértelmezett Entity Framework Core-tárolót használja az adatbázisához. ARazorPagesPizzaAuth
DbContext
rendszer az osztályt használja.
- Az identitás-keretrendszer projekthez való hozzáadásához használt generátor
Az adatbázis-kapcsolat konfigurálása
A ConnectionStrings
szakasznak appsettings.json a következő JSON-hoz hasonlóan kell kinéznie:
"ConnectionStrings": {
"RazorPagesPizzaAuthConnection": "Server=(localdb)\\mssqllocaldb;Database=RazorPagesPizza;Trusted_Connection=True;MultipleActiveResultSets=true"
}
Ez a kapcsolati sztring alapértelmezés szerint az SQL Server Express LocalDB egy példányára mutat. Ha helyi fejlesztést végez, ne tegyen semmit. Ez a helyes kapcsolati sztring.
A Codespacesben vagy a Dev Containersben a kapcsolati sztring helytelen. Ha a Codespace-t vagy a Dev Containert használja, az alábbiak szerint kell módosítania a kapcsolati sztring! Mindenképpen mentse a módosításokat.
"ConnectionStrings": {
"RazorPagesPizzaAuthConnection": "Data Source=localhost;Initial Catalog=RazorPagesPizza;Integrated Security=False;User Id=sa;Password=P@ssw0rd;MultipleActiveResultSets=True;Encrypt=False"
}
Ez frissíti a kapcsolati sztring a tárolón belüli SQL Server-példányhoz való csatlakozáshoz.
Az adatbázis frissítése
Most, hogy ellenőrizte a kapcsolati sztring, létrehozhat és futtathat egy migrálást az adatbázis létrehozásához.
Az alkalmazás fordításához futtassa az alábbi parancsot:
dotnet build
A buildelés figyelmeztetések nélkül, sikeresen befejeződik. Ha a buildelés sikertelen, a kimenetben találhat hibaelhárítási információt.
Telepítse az Entity Framework Core migrálási eszközt:
dotnet tool install dotnet-ef --version 8.0.* --global
Az áttelepítési eszköz egy .NET-eszköz, amely:
- Migrálásnak nevezett kódot hoz létre az Identitás entitásmodellt támogató adatbázis létrehozásához és frissítéséhez.
- Áttelepítéseket hajt végre egy meglévő adatbázison.
- Ebben a modulban hívjuk
dotnet ef
meg.
Az adatbázis frissítéséhez hozzon létre és futtasson egy EF Core-migrálást:
dotnet ef migrations add CreateIdentitySchema dotnet ef database update
A
CreateIdentitySchema
EF Core-migráció egy adatdefiníciós nyelven (DDL) írt módosítási szkript alkalmazásával hozta létre a táblákat az Identity támogatásához. A következő kimenet például a migrálás által létrehozott utasítástCREATE TABLE
ábrázolja:info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executed DbCommand (98ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] CREATE TABLE [AspNetUsers] ( [Id] nvarchar(450) NOT NULL, [UserName] nvarchar(256) NULL, [NormalizedUserName] nvarchar(256) NULL, [Email] nvarchar(256) NULL, [NormalizedEmail] nvarchar(256) NULL, [EmailConfirmed] bit NOT NULL, [PasswordHash] nvarchar(max) NULL, [SecurityStamp] nvarchar(max) NULL, [ConcurrencyStamp] nvarchar(max) NULL, [PhoneNumber] nvarchar(max) NULL, [PhoneNumberConfirmed] bit NOT NULL, [TwoFactorEnabled] bit NOT NULL, [LockoutEnd] datetimeoffset NULL, [LockoutEnabled] bit NOT NULL, [AccessFailedCount] int NOT NULL, CONSTRAINT [PK_AspNetUsers] PRIMARY KEY ([Id]) );
Tipp.
A parancs hibát jelzett, hogy a
ef
LocalDb nem támogatott? Győződjön meg arról, hogy beállította a kapcsolati sztring az "Adatbázis-kapcsolat konfigurálása" című szakaszban leírtak szerint!Az SQL Server-bővítmény szükség esetén hozzáadva a Visual Studio Code-hoz, amikor elfogadta az ajánlott bővítményeket. A Ctrl Alt D billentyűkombinációval++ váltson az SQL Server panelre.
Bontsa ki a csomópontokat a meglévő adatbázis-kapcsolat alatt. Bontsa ki az Adatbázisok csomópontot, a RazorPagesPizza csomópontot és végül a Táblák csomópontot. Jegyezze fel a táblák listáját. Ez megerősíti, hogy a migrálás sikeres volt.
Feljegyzés
Az előző képen az SQL Server Express LocalDB-t használó példa látható. A .devcontainer használatakor a kapcsolat neve mssql-container.
A bejelentkezési és regisztrációs hivatkozások hozzáadása
Lépjen vissza az Explorer panelre. A Pages/Shared/_Layout.cshtml fájlban cserélje le az @* Add the _LoginPartial partial view *@
megjegyzést a következővel.
<partial name="_LoginPartial" />
A fenti kód a _LoginPartial
részleges nézetet jeleníti meg minden olyan oldal fejlécében, amely az alapértelmezett elrendezést használja. Az Identitás állvány hozzáadva _LoginPartial
. Ez a részleges nézet egy Bejelentkezés és egy Regisztráció hivatkozást kínál fel a felhasználónak, ha még nincs bejelentkezve.
Az Identitás funkció tesztelése
Ez minden, ami az alapértelmezett identitás-implementáció hozzáadásához szükséges. Itt az ideje, hogy tesztelje!
Minden módosítást mentsen.
A terminálpanelen hozza létre a projektet, és futtassa az alkalmazást:
dotnet run
Navigáljon az alkalmazáshoz a böngészőben a korábbiakhoz hasonlóan.
Válassza a Regisztráció hivatkozást az alkalmazás fejlécében. Hozzon létre új fiókot az űrlap kitöltésével.
Megjelenik a Regisztráció megerősítő oldal. Mivel az alkalmazás nincs konfigurálva megerősítő e-mailek küldésére, a megerősítő hivatkozás ezen a lapon található.
Válassza a megerősítő hivatkozást. Megjelenik egy megerősítést kérő üzenet.
Válassza ki az alkalmazás fejlécében található Bejelentkezési hivatkozást, és jelentkezzen be.
Sikeres bejelentkezés után:
- A rendszer átirányítja a kezdőlapra.
- Az alkalmazás fejlécében megjelenik a Hello [e-mail cím]! és a Kijelentkezés hivatkozás.
- Létrejön egy .AspNetCore.Identity.Application nevű cookie. Az Identity cookie-alapú hitelesítéssel tartja fenn a felhasználói munkameneteket.
Válassza ki a Kijelentkezés hivatkozást az alkalmazás fejlécében.
A sikeres kijelentkezés után az .AspNetCore.Identity.Application cookie törölve lesz a felhasználói munkamenet megszakításához.
Az alkalmazás leállításához nyomja le a Ctrl C billentyűkombinációt+a terminálablakban.
Összegzés
Ebben a leckében hozzáadta az alapértelmezett identitás-implementációt egy meglévő webalkalmazáshoz. A következő leckében megismerheti az identitás kiterjesztését és testreszabását.