Gyakorlat – Identitástámogatás konfigurálása

Befejeződött

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.

  1. 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
    
  2. 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.

  3. 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.

  4. Az új terminálablakban állítsa be a tartózkodási helyét a RazorPagesPizza könyvtárra:

    cd RazorPagesPizza
    
  5. 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.

  1. A terminálpanelen hozza létre a projektet, és futtassa az alkalmazást:

    dotnet run
    
  2. Jegyezze fel a terminálkimenetben megjelenő URL-címet. Például: https://localhost:7192.

  3. 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.

  4. Ismerkedjen meg a webalkalmazással a böngészőben. A fejlécen lévő hivatkozások használata:

    1. Navigálás a pizzalistára
    2. Lépjen vissza a Kezdőlapra

    Figyelje meg, hogy nincs szükség hitelesítésre.

  5. 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á.

  1. 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 .
  2. 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.
  3. 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

    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ű RazorPagesPizzaAuthEF 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. A RazorPagesPizzaAuthDbContext 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 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.

  1. 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.

  2. 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 .
  3. 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 a CREATE 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!

  4. 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.

  5. 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.

    A RazorPagesPizza adatbázis az újonnan létrehozott táblákkal.

    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.

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!

  1. Győződjön meg arról, hogy az összes módosítást mentette.

  2. A terminálpanelen hozza létre a projektet, és futtassa az alkalmazást:

    dotnet run
    
  3. Navigáljon az alkalmazáshoz a böngészőben a korábbiakhoz hasonlóan.

  4. 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ó.

  5. Válassza a megerősítést kérő hivatkozást. Megjelenik egy megerősítő üzenet.

  6. 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.
  7. 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.

  8. 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.