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 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:

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

  2. Adja meg a következő adattár URL-címét: https://github.com/MicrosoftDocs/mslearn-secure-aspnet-core-identity. Válassza ki az main á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.

  3. Ugrás az alkalmazás felfedezésére.

Helyi fejlesztési környezet használatához kövesse az alábbi lépéseket:

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

  1. A projekt betöltése után a Ctrl Shift`+ billentyűkombinációt+lenyomva nyisson meg egy új terminálpanelt.

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

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

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

    dotnet run
    
  5. Figyelje meg a terminál kimenetében megjelenő URL-címet. Például: https://localhost:7192.

  6. 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.
  7. Ismerkedjen meg a webalkalmazással a böngészőben. A fejléc hivatkozásainak használata:

    1. Navigálás a Pizza listára
    2. Navigálás a kezdőlapon

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

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

  1. 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.
  2. 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.
  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 --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 a IdentityUserkövetkező, de mivel a felhasználói osztály egy későbbi egységben van kibővítve, a rendszer egy egyéni, elnevezett RazorPagesPizzaUser felhasználói osztályt ad meg. Az RazorPagesPizzaUser osztály a következőből IdentityUserszá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

    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 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 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. A RazorPagesPizzaAuth DbContext rendszer az osztályt használja.

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.

  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 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.
  3. 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ást CREATE 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!

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

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

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

    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.

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!

  1. Minden módosítást mentsen.

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

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

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

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