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 beszerzése és megnyitása
Megjegyzés
Ha a .devcontainert szeretné használni a GitHub Codespacesben, keresse meg a MicrosoftDocs/mslearn-secure-aspnet-core-identity adattár kódtereit . Hozzon létre egy új kódteret az main
ág használatával, majd ugorjon a 3. lépésre.
A kezdőprojekt beszerzéséhez futtassa a következő parancsot egy terminálablakban:
git clone https://github.com/MicrosoftDocs/mslearn-secure-aspnet-core-identity
Váltson a forráskód könyvtárára, é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, vagy válassza az Újra a tárolóban lehetőséget, ha a .devcontainert szeretné használni.
Tipp
Ha nem jelenik meg a kérés a tárolóban való újranyitásra, a CtrlShift+Pbillentyűkombinációt+ lenyomva nyissa meg a parancskatalógust, majd keresse meg és válassza a Dev Containers: Open in Container (Fejlesztői tárolók: Újranyitás tárolóban) lehetőséget.
Miután a projekt betöltődött (helyileg vagy a tárolóban), a CtrlShift billentyűkombinációt++` lenyomva nyisson meg egy új terminálpanelt.
Az új terminálablakban á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 feltételezzük, hogy a modulban tárgyalt összes elérési út ehhez a helyhez van viszonyítva.
Az alkalmazás felfedezése
Futtassa az alkalmazást a gyors bevezetéshez.
A terminálpanelen hozza létre a projektet, és futtassa az alkalmazást:
dotnet run
Jegyezze fel a terminálkimenetben 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 Dockerben használja a .devcontainert , 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 a következők egyikét :
- Hagyja figyelmen kívül a tanúsítványhibát. Ha a Microsoft Edge-et használja, válassza a Speciális lehetőséget, majd a Folytatás a localhostig (nem ajánlott) lehetőséget. A részletek böngészőnként változnak.
- 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óért tekintse meg a létrehozott megjegyzéseket a ./devcontainer/devcontainter.json fájlban.
Ha úgy dönt, hogy importál egy meglévő fejlesztési tanúsítványt a tárolón belül, a /root/.aspnet/ tároló elérési útja .devcontainer/persisted-data/.aspnet néven jelenik meg a tárolón kívül. Ez az Ön kényelmét szolgálja.
Ha a .devcontainert használja a GitHub Codespacesben, nincs szükség műveletre. A codespaces automatikusan kezeli a proxy SSL-kapcsolatot.
Ismerkedjen meg a webalkalmazással a böngészőben. A fejlécen lévő hivatkozások használata:
- Navigálás a pizzalistára
- Lépjen vissza a Kezdőlapra
Figyelje meg, hogy nincs szükség hitelesítésre.
Az alkalmazás leállításához nyomja le a CtrlCbillentyű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 6.0.2 --global
Az állvány egy .NET Core-eszköz, amely:
- Az alapértelmezett identitásösszetevők 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.
- A meghívása ebben a modulban történik
dotnet aspnet-codegenerator
.
Adja hozzá a projekthez a következő NuGet-csomagot:
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --version 6.0.2 dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore --version 6.0.3 dotnet add package Microsoft.AspNetCore.Identity.UI --version 6.0.3 dotnet add package Microsoft.EntityFrameworkCore.Design --version 6.0.3 dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 6.0.3
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
A fenti parancsban:
- Az azonosítóként
identity
azonosított generátor az Identity-keretrendszer projekthez való hozzáadására szolgál. - A
--useDefaultUI
beállítás azt jelzi, hogy a rendszer egy Razor-osztálytárat (RCL) használ, amely az alapértelmezett felhasználói felületi elemeket tartalmazza. A Bootstrap az összetevők stílusát használja. - A
--dbContext
beállítás megadja a létrehozandó EF Core-adatbázis környezeti osztályának nevét.
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
- 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 a Frissítéskezelő gombot az Explorer panel MSLEARN-SECURE-ASPNET-CORE-IDENTITY fejlécén.
A területek módot kínálnak egy ASP.NET Core-webalkalmazás kisebb funkcionális csoportokra bontására.
Az állvány az alábbi kiemelt módosításokat is végrehajtotta a Program.cs fájlban, 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"); 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.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages(); app.Run();
A fenti kód a következőket végzi el:
- A
RazorPagesPizzaAuthConnection
kapcsolati sztring az appsettings.json fájlból olvassa be. - A nevű
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 identitásszolgáltatásoknak az alapértelmezett felhasználói modellt kell használniuk.- 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 adja meg, hogy az Identity az alapértelmezett Entity Framework Core-tárolót használja az adatbázisához. ARazorPagesPizzaAuth
DbContext
rendszer a osztályt használja.
app.UseAuthentication();
lehetővé teszi a hitelesítési képességeket. Még pontosabban az ASP.NET Core köztes hitelesítési szoftverének egy példánya lesz hozzáadva az alkalmazás HTTP-kéréseket kezelő folyamatához.
- Az azonosítóként
Az adatbázis-kapcsolat konfigurálása
A ConnectionStrings
szakaszának 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 SQL Server Express LocalDB-példányra mutat. Ha a .devcontainert használja, az alábbiak szerint kell módosítania a kapcsolati sztring! 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"
}
Ez frissíti a kapcsolati sztring a tárolón belüli SQL Server példányához 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 6.0.3 --global
A migrálási eszköz egy .NET-eszköz, amely:
- Létrehoz egy migrálás nevű kódot az Identitás entitásmodellt támogató adatbázis létrehozásához és frissítéséhez.
- Migrálásokat hajt végre egy meglévő adatbázison.
- A meghívása ebben a modulban történik
dotnet ef
.
Hozzon létre és futtasson egy EF Core-migrációt az adatbázis frissítéséhez:
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 aCREATE TABLE
migrálás által létrehozott utasítást á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 azzal kapcsolatban, 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" szakaszban leírtak szerint!A SQL Server bővítményt szükség esetén hozzáadtuk a Visual Studio Code-hoz, amikor elfogadta az ajánlott bővítményeket. A Ctrl AltDbillentyűkombinációt++ lenyomva váltson a 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, 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.
Megjegyzés
Az előző képen egy példa látható SQL Server Express LocalDB használatával. 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. Az 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. A _LoginPartial
nézetet az Identity kódgenerálója adta hozzá. 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 teszteljük!
Győződjön meg arról, hogy az összes módosítást mentette.
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ése oldal. Mivel az alkalmazás még nincs konfigurálva megerősítő e-mailek küldésére, a megerősítő hivatkozás ezen az oldalon található.
Válassza a megerősítést kérő hivatkozást. Megjelenik egy megerősítő üzenet.
Válassza a Bejelentkezés hivatkozást az alkalmazás fejlécében, és jelentkezzen be.
Sikeres bejelentkezés után:
- A rendszer a kezdőlapra irányítja vissza.
- Az alkalmazás fejlécében megjelenik a Hello [email address]! (Hello [email address]! és a Logout link).
- 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 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 CtrlCbillentyűkombinációt+ a terminálablakban.
Összefoglalás
Ebben a leckében hozzáadta az alapértelmezett identity implementációt egy meglévő webalkalmazáshoz. A következő leckében megismerheti az identitás kiterjesztését és testreszabását.