Generování uživatelského rozhraní Identity v projektech ASP.NET Core
Autor: Rick Anderson
BlazorIdentity lešení
ASP.NET generování uživatelského rozhraní Core Identity přidává ASP.NET Core Identitydo Blazor Web Appaplikací a Blazor Server aplikací. Jakmile scaffolder přidá IdentityRazor komponenty do aplikace, můžete komponenty přizpůsobit tak, aby vyhovovaly požadavkům vaší aplikace.
I když správce vygeneruje potřebný kód jazyka C#, který se má vygenerovat Identity do aplikace, musíte databázi projektu aktualizovat migrací databáze Entity Framework (EF) Core, aby se proces dokončil. Tento článek vysvětluje kroky potřebné k migraci databáze.
Zkontrolujte změny po spuštění Identity nástroje scaffolder. Doporučujeme použít GitHub nebo jiný systém správy zdrojového kódu, který zobrazuje změny souborů pomocí funkce vrácení změn.
Služby se vyžadují při použití dvojúrovňového ověřování (2FA), potvrzení účtu a obnovení hesla a dalších funkcí zabezpečení s Identity. Služby nebo zástupné procedury služeb se při generování nevygenerují Identity. Služby, které mají tyto funkce povolit, musí být přidány ručně.
RazorGenerování stránek a MVC Identity
ASP.NET Core poskytuje ASP.NET Core Identity jako knihovnu Razor tříd (RCL). Aplikace, které zahrnují Identity , mohou použít scaffolder k selektivnímu přidání zdrojového kódu obsaženého Identity v seznamu RCL. Můžete chtít vygenerovat zdrojový kód, abyste mohli kód upravit a změnit chování. Můžete například dát scaffolder pokyn, aby vygeneroval kód použitý v registraci. Identity Přizpůsobený kód přepíše výchozí implementaci poskytovanou Identity seznamem RCL. Pokud chcete získat úplnou kontrolu nad uživatelským rozhraním a nepoužívat výchozí seznam RCL, přečtěte si část Vytvoření úplného Identity zdroje uživatelského rozhraní.
Aplikace, které nezahrnují ověřování, mohou použít scaffolder pro přidání balíčku RCLIdentity. Máte možnost vybrat Identity kód, který se má vygenerovat.
I když scaffolder generuje většinu potřebného kódu, musíte aktualizovat projekt, aby se proces dokončil. Tento dokument vysvětluje kroky potřebné k dokončení Identity aktualizace generování uživatelského rozhraní.
Doporučujeme použít systém správy zdrojového kódu, který zobrazuje rozdíly mezi soubory a umožňuje vrátit se zpět ze změn. Zkontrolujte změny po spuštění Identity nástroje scaffolder.
Služby se vyžadují při použití dvoufaktorového ověřování, potvrzení účtu a obnovení hesla a dalších funkcí zabezpečení s Identity. Služby nebo zástupné procedury služeb se při generování nevygenerují Identity. Služby, které mají tyto funkce povolit, musí být přidány ručně. Příklad najdete v tématu Vyžadovat potvrzení e-mailu.
Aplikace vytvořené pomocí jednotlivých účtů by obvykle neměly vytvářet nový kontext dat.
Generování uživatelského rozhraní Identity do Blazor projektu
Tato část se týká Blazor Web Appaplikací a Blazor Server s.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Blazor Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat BlazorIdentity :
- Vyberte nebo přidejte pomocí tlačítka plus (+) třídy kontextu databáze (DbContext).
- Vyberte zprostředkovatele databáze (zprostředkovatel databáze), který je ve výchozím nastavení SQL Server.
- Vyberte nebo přidejte tlačítko plus (+) třídy uživatele (třída uživatele).
- Vyberte tlačítko Přidat.
Vygenerovaný Identity databázový kód vyžaduje EF Core migrace. Následující kroky vysvětlují, jak vytvořit a použít migraci do databáze.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Blazor Klientské aplikace (samostatnéBlazor WebAssembly)
Blazor Klientské aplikace (samostatnéBlazor WebAssembly) používají vlastní Identity přístupy k uživatelskému rozhraní a nemůžou používat generování uživatelského rozhraní ASP.NET CoreIdentity.
Další informace najdete v tématech Blazor Zabezpečení a Identity články.
Generování uživatelského rozhraní Identity do Razor projektu bez existující autorizace
Microsoft.VisualStudio.Web.CodeGeneration.Design
Nainstalujte balíček NuGet.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Migrace, useAuthentication a rozložení
Vygenerovaný Identity databázový kód vyžaduje migrace Entity Framework (EF) Core. Pokud migrace pro vygenerování schématu Identity nebyla vytvořena a použita pro databázi, vytvořte migraci a aktualizujte databázi.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Identity Pokud schéma již bylo vytvořeno, ale není použito v databázi, je nutné spustit pouze příkaz k aktualizaci databáze:
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované příkazem Aktualizovat databázi.
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Aplikaci schématu Identity můžete potvrdit pomocí následujícího příkazu. Výstup příkazu obsahuje sloupec "applied
", který ukazuje, které migrace se použijí v databázi.
V konzole Správce balíčků sady Visual Studio spusťteGet-Migration
:
Get-Migration
Pokud existuje více kontextů databáze, zadejte kontext pomocí parametru -Context
.
Změny rozložení
Volitelné: Přidání částečného přihlášení (_LoginPartial
) do souboru rozložení:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - WebRPnoAuth2Auth</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/WebRPnoAuth2Auth.styles.css" asp-append-version="true" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-page="/Index">WebRPnoAuth2Auth</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
</ul>
<partial name="_LoginPartial" />
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
© 2021 - WebRPnoAuth2Auth - <a asp-area="" asp-page="/Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
Generování uživatelského rozhraní Identity do Razor projektu s autorizací
Microsoft.VisualStudio.Web.CodeGeneration.Design
Nainstalujte balíček NuGet.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Generování uživatelského rozhraní Identity do projektu MVC bez existující autorizace
Microsoft.VisualStudio.Web.CodeGeneration.Design
Nainstalujte balíček NuGet.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Volitelné: Přidejte do souboru částečnou (_LoginPartial
) Views/Shared/_Layout.cshtml
přihlášení:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - WebRPnoAuth2Auth</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/WebRPnoAuth2Auth.styles.css" asp-append-version="true" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-page="/Index">WebRPnoAuth2Auth</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
</ul>
<partial name="_LoginPartial" />
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
© 2021 - WebRPnoAuth2Auth - <a asp-area="" asp-page="/Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
Vygenerovaný Identity databázový kód vyžaduje migrace Entity Framework (EF) Core. Pokud migrace pro vygenerování schématu Identity nebyla vytvořena a použita pro databázi, vytvořte migraci a aktualizujte databázi.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Identity Pokud schéma již bylo vytvořeno, ale není použito v databázi, je nutné spustit pouze příkaz k aktualizaci databáze:
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované příkazem Aktualizovat databázi.
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Aplikaci schématu Identity můžete potvrdit pomocí následujícího příkazu. Výstup příkazu obsahuje sloupec "applied
", který ukazuje, které migrace se použijí v databázi.
V konzole Správce balíčků sady Visual Studio spusťteGet-Migration
:
Get-Migration
Pokud existuje více kontextů databáze, zadejte kontext pomocí parametru -Context
.
Program.cs
Přidejte MapRazorPages
ho, jak je znázorněno v následujícím zvýrazněném kódu:
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using WebMVCauth.Data;
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddControllersWithViews();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseMigrationsEndPoint();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();
app.Run();
Generování uživatelského rozhraní Identity do projektu MVC s autorizací
Microsoft.VisualStudio.Web.CodeGeneration.Design
Nainstalujte balíček NuGet.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Vytvoření úplného Identity zdroje uživatelského rozhraní
Pokud chcete zachovat úplnou kontrolu nad uživatelským Identity rozhraním, spusťte Identity správce uživatelského rozhraní a vyberte Přepsat všechny soubory.
Konfigurace hesla
Pokud PasswordOptions jsou nakonfigurovány v Startup.ConfigureServices
, [StringLength]
konfigurace atributu může být vyžadována Password
pro vlastnost na vygenerovaných Identity stránkách. InputModel
Password
vlastnosti jsou nalezeny v následujících souborech:
Areas/Identity/Pages/Account/Register.cshtml.cs
Areas/Identity/Pages/Account/ResetPassword.cshtml.cs
Zakázání stránky
V této části se dozvíte, jak zakázat stránku pro registraci, ale můžete ji použít k zakázání libovolné stránky.
Zakázání registrace uživatele:
Lešení Identity. Zahrnout Account.Register, Account.Login a Account.RegisterConfirmation. Příklad:
dotnet aspnet-codegenerator identity -dc RPauth.Data.ApplicationDbContext --files "Account.Register;Account.Login;Account.RegisterConfirmation"
Aktualizujte
Areas/Identity/Pages/Account/Register.cshtml.cs
, aby se uživatelé nemohli zaregistrovat z tohoto koncového bodu:public class RegisterModel : PageModel { public IActionResult OnGet() { return RedirectToPage("Login"); } public IActionResult OnPost() { return RedirectToPage("Login"); } }
Aktualizujte
Areas/Identity/Pages/Account/Register.cshtml
, aby byly konzistentní s předchozími změnami:@page @model RegisterModel @{ ViewData["Title"] = "Go to Login"; } <h1>@ViewData["Title"]</h1> <li class="nav-item"> <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a> </li>
Zakomentujte nebo odeberte registrační odkaz z
Areas/Identity/Pages/Account/Login.cshtml
@* <p> <a asp-page="./Register" asp-route-returnUrl="@Model.ReturnUrl">Register as a new user</a> </p> *@
Aktualizujte
Areas/Identity/Pages/Account/RegisterConfirmation
stránku.- Odeberte kód a odkazy ze souboru cshtml.
- Odeberte potvrzovací kód z
PageModel
:
[AllowAnonymous] public class RegisterConfirmationModel : PageModel { public IActionResult OnGet() { return Page(); } }
Přidání uživatelů pomocí jiné aplikace
Zadejte mechanismus pro přidání uživatelů mimo webovou aplikaci. Mezi možnosti přidání uživatelů patří:
- Vyhrazená webová aplikace pro správu
- Konzolová aplikace.
Následující kód popisuje jeden přístup k přidávání uživatelů:
- Seznam uživatelů se čte do paměti.
- Pro každého uživatele se vygeneruje silné jedinečné heslo.
- Uživatel se přidá do Identity databáze.
- Uživateli se zobrazí oznámení a bude mu řečeno, aby změnil heslo.
public class Program
{
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<AppDbCntx>();
context.Database.Migrate();
var config = host.Services.GetRequiredService<IConfiguration>();
var userList = config.GetSection("userList").Get<List<string>>();
SeedData.Initialize(services, userList).Wait();
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred adding users.");
}
}
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Následující kód popisuje přidání uživatele:
public static async Task Initialize(IServiceProvider serviceProvider,
List<string> userList)
{
var userManager = serviceProvider.GetService<UserManager<IdentityUser>>();
foreach (var userName in userList)
{
var userPassword = GenerateSecurePassword();
var userId = await EnsureUser(userManager, userName, userPassword);
NotifyUser(userName, userPassword);
}
}
private static async Task<string> EnsureUser(UserManager<IdentityUser> userManager,
string userName, string userPassword)
{
var user = await userManager.FindByNameAsync(userName);
if (user == null)
{
user = new IdentityUser(userName)
{
EmailConfirmed = true
};
await userManager.CreateAsync(user, userPassword);
}
return user.Id;
}
Podobný přístup je možné sledovat v produkčních scénářích.
Zabránění publikování statických Identity prostředků
Pokud chcete zabránit publikování statických Identity prostředků do kořenového adresáře webu, přečtěte si téma Úvod do Identity ASP.NET Core.
ASP.NET Core poskytuje ASP.NET Core Identity jako knihovnu Razor tříd (RCL). Aplikace, které zahrnují Identity , mohou použít scaffolder k selektivnímu přidání zdrojového kódu obsaženého Identity v seznamu RCL. Můžete chtít vygenerovat zdrojový kód, abyste mohli kód upravit a změnit chování. Můžete například dát scaffolder pokyn, aby vygeneroval kód použitý v registraci. Vygenerovaný kód má přednost před stejným kódem v seznamu Identity RCL. Pokud chcete získat úplnou kontrolu nad uživatelským rozhraním a nepoužívat výchozí seznam RCL, přečtěte si část Vytvoření úplného Identity zdroje uživatelského rozhraní.
Aplikace, které nezahrnují ověřování, mohou použít scaffolder pro přidání balíčku RCLIdentity. Máte možnost vybrat Identity kód, který se má vygenerovat.
I když scaffolder generuje většinu potřebného kódu, musíte aktualizovat projekt, aby se proces dokončil. Tento dokument vysvětluje kroky potřebné k dokončení Identity aktualizace generování uživatelského rozhraní.
Doporučujeme použít systém správy zdrojového kódu, který zobrazuje rozdíly mezi soubory a umožňuje vrátit se zpět ze změn. Zkontrolujte změny po spuštění Identity nástroje scaffolder.
Služby se vyžadují při použití dvoufaktorového ověřování, potvrzení účtu a obnovení hesla a dalších funkcí zabezpečení s Identity. Služby nebo zástupné procedury služeb se při generování nevygenerují Identity. Služby, které mají tyto funkce povolit, musí být přidány ručně. Příklad najdete v tématu Vyžadovat potvrzení e-mailu.
Aplikace vytvořené pomocí jednotlivých účtů by obvykle neměly vytvářet nový kontext dat.
Generování uživatelského rozhraní Identity do Razor projektu bez existující autorizace
Microsoft.VisualStudio.Web.CodeGeneration.Design
Nainstalujte balíček NuGet.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Migrace, useAuthentication a rozložení
Vygenerovaný Identity databázový kód vyžaduje migrace Entity Framework (EF) Core. Pokud migrace pro vygenerování schématu Identity nebyla vytvořena a použita pro databázi, vytvořte migraci a aktualizujte databázi.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Identity Pokud schéma již bylo vytvořeno, ale není použito v databázi, je nutné spustit pouze příkaz k aktualizaci databáze:
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované příkazem Aktualizovat databázi.
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Aplikaci schématu Identity můžete potvrdit pomocí následujícího příkazu. Výstup příkazu obsahuje sloupec "applied
", který ukazuje, které migrace se použijí v databázi.
V konzole Správce balíčků sady Visual Studio spusťteGet-Migration
:
Get-Migration
Pokud existuje více kontextů databáze, zadejte kontext pomocí parametru -Context
.
Změny rozložení
Volitelné: Přidání částečného přihlášení (_LoginPartial
) do souboru rozložení:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - WebRPnoAuth2Auth</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/WebRPnoAuth2Auth.styles.css" asp-append-version="true" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-page="/Index">WebRPnoAuth2Auth</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
</ul>
<partial name="_LoginPartial" />
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
© 2021 - WebRPnoAuth2Auth - <a asp-area="" asp-page="/Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
Generování uživatelského rozhraní Identity do Razor projektu s autorizací
Microsoft.VisualStudio.Web.CodeGeneration.Design
Nainstalujte balíček NuGet.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Generování uživatelského rozhraní Identity do projektu MVC bez existující autorizace
Microsoft.VisualStudio.Web.CodeGeneration.Design
Nainstalujte balíček NuGet.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Volitelné: Přidejte do souboru částečnou (_LoginPartial
) Views/Shared/_Layout.cshtml
přihlášení:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - WebRPnoAuth2Auth</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/WebRPnoAuth2Auth.styles.css" asp-append-version="true" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-page="/Index">WebRPnoAuth2Auth</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
</ul>
<partial name="_LoginPartial" />
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
© 2021 - WebRPnoAuth2Auth - <a asp-area="" asp-page="/Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
Vygenerovaný Identity databázový kód vyžaduje migrace Entity Framework (EF) Core. Pokud migrace pro vygenerování schématu Identity nebyla vytvořena a použita pro databázi, vytvořte migraci a aktualizujte databázi.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Identity Pokud schéma již bylo vytvořeno, ale není použito v databázi, je nutné spustit pouze příkaz k aktualizaci databáze:
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované příkazem Aktualizovat databázi.
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Aplikaci schématu Identity můžete potvrdit pomocí následujícího příkazu. Výstup příkazu obsahuje sloupec "applied
", který ukazuje, které migrace se použijí v databázi.
V konzole Správce balíčků sady Visual Studio spusťteGet-Migration
:
Get-Migration
Pokud existuje více kontextů databáze, zadejte kontext pomocí parametru -Context
.
Program.cs
Přidejte MapRazorPages
ho, jak je znázorněno v následujícím zvýrazněném kódu:
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using WebMVCauth.Data;
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddControllersWithViews();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseMigrationsEndPoint();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();
app.Run();
Generování uživatelského rozhraní Identity do projektu MVC s autorizací
Microsoft.VisualStudio.Web.CodeGeneration.Design
Nainstalujte balíček NuGet.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Generování uživatelského rozhraní Identity do aplikace na straně Blazor serveru s autorizací
Microsoft.VisualStudio.Web.CodeGeneration.Design
Nainstalujte balíček NuGet.
Poznámka:
Pokyny k přidávání balíčků do aplikací .NET najdete v článcích v části Instalace a správa balíčků na webu Pracovní postup používání balíčků (dokumentace k NuGetu). Ověřte správné verze balíčků na NuGet.org.
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Migrace
Vygenerovaný Identity databázový kód vyžaduje migrace Entity Framework (EF) Core. Pokud migrace pro vygenerování schématu Identity nebyla vytvořena a použita pro databázi, vytvořte migraci a aktualizujte databázi.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Identity Pokud schéma již bylo vytvořeno, ale není použito v databázi, je nutné spustit pouze příkaz k aktualizaci databáze:
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované příkazem Aktualizovat databázi.
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Aplikaci schématu Identity můžete potvrdit pomocí následujícího příkazu. Výstup příkazu obsahuje sloupec "applied
", který ukazuje, které migrace se použijí v databázi.
V konzole Správce balíčků sady Visual Studio spusťteGet-Migration
:
Get-Migration
Pokud existuje více kontextů databáze, zadejte kontext pomocí parametru -Context
.
Koncové body ověřování stylu
Vzhledem k tomu, že aplikace na straně Blazor serveru používají Razor stránky Stránky Identity , změní se styl uživatelského rozhraní, když návštěvník přechází mezi Identity stránkami a komponentami. Máte dvě možnosti, jak řešit incongruous styly:
Vlastní Identity komponenty
ASP.NET Core Identity je navržená tak, aby fungovala v kontextu komunikace požadavků HTTP a odpovědí, což není primární komunikační model klient-server v Blazor aplikacích. Aplikace ASP.NET Core, které pro správu uživatelů využívají ASP.NET Core Identity, by měly pro uživatelské rozhraní související s Identity, jako je registrace uživatele, přihlášení, odhlášení a další úlohy správy uživatelů, místo komponent Razor využívat Razor Pages.
Vzhledem k tomu SignInManager<TUser> , že komponenty a UserManager<TUser> nejsou podporované Razor , doporučujeme ke správě Identity akcí ze Razor součástí použít webové rozhraní API ASP.NET IdentityCore. Pokyny k vytváření webových rozhraní API pro Blazor aplikace najdete v tématu Volání webového rozhraní API z aplikace ASP.NET CoreBlazor.
Přístup k používání Razor komponent místo Identity Razor stránek spočívá v vytváření vlastních IdentityRazor komponent, ale Microsoft tento přístup nedoporučuje ani nepodporuje. Další kontext najdete v následujících diskuzích. V následujících diskuzích microsoft microsoft nepodporuje příklady kódu v komentářích k problému a příklady kódu křížově propojené v úložištích mimo Microsoft GitHub, ale můžou být užitečné pro některé vývojáře:
- Podpora vlastní přihlašovací komponenty při použití Identity (dotnet/aspnetcore #13601)
- Reiteration on the
SigninManager<T>
not being supported in Razor Components (dotnet/aspnetcore #34095) - Neexistují žádné informace o tom, jak ve skutečnosti implementovat vlastní přihlašovací formulář na straně blazor serveru (dotnet/AspNetCore.Docs #16813).
Pokud potřebujete další pomoc při hledání vlastních IdentityRazor komponent nebo hledání komponent třetích stran Razor , doporučujeme následující zdroje informací:
- Stack Overflow (značka:
blazor
) (fórum veřejné podpory) - ASP.NET Core Slack Team (veřejný chat podpory)
- Blazor Gitter (veřejný chat podpory)
- Awesome Blazor (odkazy na prostředky spravované Blazor komunitou)
Použití vlastního rozložení se Blazor styly aplikací
Rozložení Identity a styly stránek lze upravit tak, aby vytvářely stránky, které používají styly podobné výchozímu Blazor motivu. Tento přístup se nevztahuje na dokumentaci.
Blazor Klientské aplikace
Blazor Klientské aplikace používají vlastní Identity přístupy k uživatelskému rozhraní a nemůžou používat generování uživatelského rozhraní ASP.NET CoreIdentity. Serverové ASP.NET základní aplikace hostovaných Blazor řešení můžou postupovat podle Razor pokynů pages/MVC v tomto článku a jsou nakonfigurované stejně jako jakýkoli jiný typ aplikace ASP.NET Core, která podporuje Identity.
Architektura Blazor nezahrnuje Razor verze Identity součástí stránek uživatelského rozhraní. Identity Komponenty uživatelského rozhraní Razor můžou být vytvořené nebo získané z nepodporovaných zdrojů třetích stran.
Další informace najdete v tématech Blazor Zabezpečení a Identity články.
Vytvoření úplného Identity zdroje uživatelského rozhraní
Pokud chcete zachovat úplnou kontrolu nad uživatelským Identity rozhraním, spusťte Identity správce uživatelského rozhraní a vyberte Přepsat všechny soubory.
Konfigurace hesla
Pokud PasswordOptions jsou nakonfigurovány v Startup.ConfigureServices
, [StringLength]
konfigurace atributu může být vyžadována Password
pro vlastnost na vygenerovaných Identity stránkách. InputModel
Password
vlastnosti jsou nalezeny v následujících souborech:
Areas/Identity/Pages/Account/Register.cshtml.cs
Areas/Identity/Pages/Account/ResetPassword.cshtml.cs
Zakázání stránky
V této části se dozvíte, jak zakázat stránku pro registraci, ale můžete ji použít k zakázání libovolné stránky.
Zakázání registrace uživatele:
Lešení Identity. Zahrnout Account.Register, Account.Login a Account.RegisterConfirmation. Příklad:
dotnet aspnet-codegenerator identity -dc RPauth.Data.ApplicationDbContext --files "Account.Register;Account.Login;Account.RegisterConfirmation"
Aktualizujte
Areas/Identity/Pages/Account/Register.cshtml.cs
, aby se uživatelé nemohli zaregistrovat z tohoto koncového bodu:public class RegisterModel : PageModel { public IActionResult OnGet() { return RedirectToPage("Login"); } public IActionResult OnPost() { return RedirectToPage("Login"); } }
Aktualizujte
Areas/Identity/Pages/Account/Register.cshtml
, aby byly konzistentní s předchozími změnami:@page @model RegisterModel @{ ViewData["Title"] = "Go to Login"; } <h1>@ViewData["Title"]</h1> <li class="nav-item"> <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a> </li>
Zakomentujte nebo odeberte registrační odkaz z
Areas/Identity/Pages/Account/Login.cshtml
@* <p> <a asp-page="./Register" asp-route-returnUrl="@Model.ReturnUrl">Register as a new user</a> </p> *@
Aktualizujte
Areas/Identity/Pages/Account/RegisterConfirmation
stránku.- Odeberte kód a odkazy ze souboru cshtml.
- Odeberte potvrzovací kód z
PageModel
:
[AllowAnonymous] public class RegisterConfirmationModel : PageModel { public IActionResult OnGet() { return Page(); } }
Přidání uživatelů pomocí jiné aplikace
Zadejte mechanismus pro přidání uživatelů mimo webovou aplikaci. Mezi možnosti přidání uživatelů patří:
- Vyhrazená webová aplikace pro správu
- Konzolová aplikace.
Následující kód popisuje jeden přístup k přidávání uživatelů:
- Seznam uživatelů se čte do paměti.
- Pro každého uživatele se vygeneruje silné jedinečné heslo.
- Uživatel se přidá do Identity databáze.
- Uživateli se zobrazí oznámení a bude mu řečeno, aby změnil heslo.
public class Program
{
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<AppDbCntx>();
context.Database.Migrate();
var config = host.Services.GetRequiredService<IConfiguration>();
var userList = config.GetSection("userList").Get<List<string>>();
SeedData.Initialize(services, userList).Wait();
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred adding users.");
}
}
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Následující kód popisuje přidání uživatele:
public static async Task Initialize(IServiceProvider serviceProvider,
List<string> userList)
{
var userManager = serviceProvider.GetService<UserManager<IdentityUser>>();
foreach (var userName in userList)
{
var userPassword = GenerateSecurePassword();
var userId = await EnsureUser(userManager, userName, userPassword);
NotifyUser(userName, userPassword);
}
}
private static async Task<string> EnsureUser(UserManager<IdentityUser> userManager,
string userName, string userPassword)
{
var user = await userManager.FindByNameAsync(userName);
if (user == null)
{
user = new IdentityUser(userName)
{
EmailConfirmed = true
};
await userManager.CreateAsync(user, userPassword);
}
return user.Id;
}
Podobný přístup je možné sledovat v produkčních scénářích.
Zabránění publikování statických Identity prostředků
Pokud chcete zabránit publikování statických Identity prostředků do kořenového adresáře webu, přečtěte si téma Úvod do Identity ASP.NET Core.
ASP.NET Core poskytuje ASP.NET Core Identity jako knihovnu Razor tříd (RCL). Aplikace, které zahrnují Identity , mohou použít scaffolder k selektivnímu přidání zdrojového kódu obsaženého Identity v seznamu RCL. Můžete chtít vygenerovat zdrojový kód, abyste mohli kód upravit a změnit chování. Můžete například dát scaffolder pokyn, aby vygeneroval kód použitý v registraci. Vygenerovaný kód má přednost před stejným kódem v seznamu Identity RCL. Pokud chcete získat úplnou kontrolu nad uživatelským rozhraním a nepoužívat výchozí seznam RCL, přečtěte si část Vytvoření úplného Identity zdroje uživatelského rozhraní.
Aplikace, které nezahrnují ověřování, mohou použít scaffolder pro přidání balíčku RCLIdentity. Máte možnost vybrat Identity kód, který se má vygenerovat.
I když scaffolder generuje většinu potřebného kódu, musíte aktualizovat projekt, aby se proces dokončil. Tento dokument vysvětluje kroky potřebné k dokončení Identity aktualizace generování uživatelského rozhraní.
Doporučujeme použít systém správy zdrojového kódu, který zobrazuje rozdíly mezi soubory a umožňuje vrátit se zpět ze změn. Zkontrolujte změny po spuštění Identity nástroje scaffolder.
Služby se vyžadují při použití dvoufaktorového ověřování, potvrzení účtu a obnovení hesla a dalších funkcí zabezpečení s Identity. Služby nebo zástupné procedury služeb se při generování nevygenerují Identity. Služby, které mají tyto funkce povolit, musí být přidány ručně. Příklad najdete v tématu Vyžadovat potvrzení e-mailu.
Při generování uživatelského rozhraní Identity s novým kontextem dat do projektu s existujícími individuálními účty otevřete Startup.ConfigureServices
a odeberte volání:
AddDbContext
AddDefaultIdentity
Například AddDbContext
a AddDefaultIdentity
jsou okomentovány v následujícím kódu:
public void ConfigureServices(IServiceCollection services)
{
//services.AddDbContext<ApplicationDbContext>(options =>
// options.UseSqlServer(
// Configuration.GetConnectionString("DefaultConnection")));
//services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
// .AddEntityFrameworkStores<ApplicationDbContext>();
services.AddControllersWithViews();
services.AddRazorPages();
}
Předchozí kód okomentuje kód, který je duplikován v Areas/Identity/IdentityHostingStartup.cs
Aplikace vytvořené pomocí jednotlivých účtů by obvykle neměly vytvářet nový kontext dat.
Generování uživatelského rozhraní Identity do prázdného projektu
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Startup
Aktualizujte třídu kódem podobným následujícímu:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}
UseHsts
se doporučuje, ale nevyžaduje se. Další informace naleznete v tématu HTTP Strict Transport Security Protocol.
Vygenerovaný Identity databázový kód vyžaduje migrace Entity Framework (EF) Core. Pokud migrace pro vygenerování schématu Identity nebyla vytvořena a použita pro databázi, vytvořte migraci a aktualizujte databázi.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Identity Pokud schéma již bylo vytvořeno, ale není použito v databázi, je nutné spustit pouze příkaz k aktualizaci databáze:
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované příkazem Aktualizovat databázi.
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Aplikaci schématu Identity můžete potvrdit pomocí následujícího příkazu. Výstup příkazu obsahuje sloupec "applied
", který ukazuje, které migrace se použijí v databázi.
V konzole Správce balíčků sady Visual Studio spusťteGet-Migration
:
Get-Migration
Pokud existuje více kontextů databáze, zadejte kontext pomocí parametru -Context
.
Generování uživatelského rozhraní Identity do Razor projektu bez existující autorizace
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Identity je nakonfigurován v Areas/Identity/IdentityHostingStartup.cs
souboru . Další informace najdete na webu IHostingStartup
.
Migrace, useAuthentication a rozložení
Vygenerovaný Identity databázový kód vyžaduje migrace Entity Framework (EF) Core. Pokud migrace pro vygenerování schématu Identity nebyla vytvořena a použita pro databázi, vytvořte migraci a aktualizujte databázi.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Identity Pokud schéma již bylo vytvořeno, ale není použito v databázi, je nutné spustit pouze příkaz k aktualizaci databáze:
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované příkazem Aktualizovat databázi.
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Aplikaci schématu Identity můžete potvrdit pomocí následujícího příkazu. Výstup příkazu obsahuje sloupec "applied
", který ukazuje, které migrace se použijí v databázi.
V konzole Správce balíčků sady Visual Studio spusťteGet-Migration
:
Get-Migration
Pokud existuje více kontextů databáze, zadejte kontext pomocí parametru -Context
.
Povolit ověřování
Startup
Aktualizujte třídu kódem podobným následujícímu:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
UseHsts
se doporučuje, ale nevyžaduje se. Další informace naleznete v tématu HTTP Strict Transport Security Protocol.
Změny rozložení
Volitelné: Přidání částečného přihlášení (_LoginPartial
) do souboru rozložení:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - WebRP</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-page="/Index">WebRP</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<partial name="_LoginPartial" />
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
© 2019 - WebRP - <a asp-area="" asp-page="/Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@RenderSection("Scripts", required: false)
</body>
</html>
Generování uživatelského rozhraní Identity do Razor projektu s autorizací
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Některé Identity možnosti jsou nakonfigurované v Areas/Identity/IdentityHostingStartup.cs
souboru . Další informace najdete na webu IHostingStartup
.
Generování uživatelského rozhraní Identity do projektu MVC bez existující autorizace
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Volitelné: Přidejte do souboru částečnou (_LoginPartial
) Views/Shared/_Layout.cshtml
přihlášení:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - WebRP</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-page="/Index">WebRP</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<partial name="_LoginPartial" />
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
© 2019 - WebRP - <a asp-area="" asp-page="/Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@RenderSection("Scripts", required: false)
</body>
</html>
Pages/Shared/_LoginPartial.cshtml
Přesuňte soubor do Views/Shared/_LoginPartial.cshtml
složky .
Identity je nakonfigurován v Areas/Identity/IdentityHostingStartup.cs
souboru . Další informace najdete na webu IHostingStartup
.
Vygenerovaný Identity databázový kód vyžaduje migrace Entity Framework (EF) Core. Pokud migrace pro vygenerování schématu Identity nebyla vytvořena a použita pro databázi, vytvořte migraci a aktualizujte databázi.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Identity Pokud schéma již bylo vytvořeno, ale není použito v databázi, je nutné spustit pouze příkaz k aktualizaci databáze:
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované příkazem Aktualizovat databázi.
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Aplikaci schématu Identity můžete potvrdit pomocí následujícího příkazu. Výstup příkazu obsahuje sloupec "applied
", který ukazuje, které migrace se použijí v databázi.
V konzole Správce balíčků sady Visual Studio spusťteGet-Migration
:
Get-Migration
Pokud existuje více kontextů databáze, zadejte kontext pomocí parametru -Context
.
Startup
Aktualizujte třídu kódem podobným následujícímu:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}
UseHsts
se doporučuje, ale nevyžaduje se. Další informace naleznete v tématu HTTP Strict Transport Security Protocol.
Generování uživatelského rozhraní Identity do projektu MVC s autorizací
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Generování uživatelského rozhraní Identity do aplikace na straně Blazor serveru bez existující autorizace
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Identity je nakonfigurován v Areas/Identity/IdentityHostingStartup.cs
souboru . Další informace najdete na webu IHostingStartup
.
Migrace
Vygenerovaný Identity databázový kód vyžaduje migrace Entity Framework (EF) Core. Pokud migrace pro vygenerování schématu Identity nebyla vytvořena a použita pro databázi, vytvořte migraci a aktualizujte databázi.
Připojené služby sady Visual Studio slouží k přidání EF Core migrace a aktualizaci databáze.
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované přidáním migrace.
Pojmenujte migraci, například CreateIdentitySchema
název, který popisuje migraci. Počkejte, než se kontext databáze načte do pole názvů tříd DbContext, což může trvat několik sekund. Výběrem možnosti Dokončit vytvořte migraci.
Po dokončení operace vyberte tlačítko Zavřít.
Znovu vyberte tři tečky (...
) následované příkazem Aktualizovat databázi .
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Příkaz aktualizační databáze spustí Up
migrace metod, které nebyly použity v souboru kódu migrace vytvořeném správcem. V tomto případě příkaz spustí metodu Up
Migrations/{TIME STAMP}_{MIGRATION NAME}.cs
v souboru, která vytvoří Identity tabulky, omezení a indexy. Zástupný {TIME STAMP}
symbol je časové razítko a {MIGRATION NAME}
zástupný symbol je název migrace.
Identity Pokud schéma již bylo vytvořeno, ale není použito v databázi, je nutné spustit pouze příkaz k aktualizaci databáze:
V Průzkumník řešení poklikejte na Připojené služby. V oblasti SQL Server Express LocalDB závislostí služeb vyberte tři tečky (...
) následované příkazem Aktualizovat databázi.
Otevře se dialogové okno Aktualizovat databázi s nejnovější migrací . Počkejte na aktualizaci pole názvů tříd DbContext a před načtením migrace, což může trvat několik sekund. Vyberte tlačítko Dokončit.
Po dokončení operace vyberte tlačítko Zavřít.
Aplikaci schématu Identity můžete potvrdit pomocí následujícího příkazu. Výstup příkazu obsahuje sloupec "applied
", který ukazuje, které migrace se použijí v databázi.
V konzole Správce balíčků sady Visual Studio spusťteGet-Migration
:
Get-Migration
Pokud existuje více kontextů databáze, zadejte kontext pomocí parametru -Context
.
Koncové body ověřování stylu
Vzhledem k tomu, že aplikace na straně Blazor serveru používají Razor stránky Stránky Identity , změní se styl uživatelského rozhraní, když návštěvník přechází mezi Identity stránkami a komponentami. Máte dvě možnosti, jak řešit incongruous styly:
Vlastní Identity komponenty
Přístup k používání komponent místo Identity stránek spočívá v vytváření Identity komponent. Vzhledem k tomu SignInManager
, že součásti UserManager
nejsou podporované Razor , použijte koncové body webového Blazor rozhraní API v aplikaci ke zpracování akcí uživatelského účtu.
Použití vlastního rozložení se Blazor styly aplikací
Rozložení Identity a styly stránek lze upravit tak, aby vytvářely stránky, které používají styly podobné výchozímu Blazor motivu. Tento přístup se nevztahuje na dokumentaci.
Generování uživatelského rozhraní Identity do aplikace na straně Blazor serveru s autorizací
Identity Spusťte scaffolder:
- V Průzkumník řešení klikněte pravým tlačítkem myši na projekt> Přidat>novou vygenerovanou položku.
- V levém podokně dialogového okna Přidat novou vygenerovanou položku vyberte Identity. Vyberte Identity v prostředním podokně. Vyberte tlačítko Přidat.
- V dialogovém okně Přidat Identity vyberte požadované možnosti.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
_Layout.cshtml
), vyberte existující stránku rozložení, abyste se vyhnuli přepsání rozložení nesprávným kódem od správce. Vyberte například jednu z těchto akcí:Pages/Shared/_Layout.cshtml
pro Razor stránky nebo Blazor Server projekty s existující Razor infrastrukturou Pages.Views/Shared/_Layout.cshtml
pro projekty nebo Blazor Server projekty MVC se stávající infrastrukturou MVC.
- Pro kontext dat (DbContext – třída):
- Vyberte třídu kontextu dat. Abyste mohli přidat kontext dat, musíte vybrat alespoň jeden soubor.
- Pokud chcete vytvořit kontext dat a případně vytvořit novou třídu Identityuživatele, vyberte + tlačítko. Přijměte výchozí hodnotu nebo zadejte třídu (například
Contoso.Data.ApplicationDbContext
pro společnost s názvem Contoso). Pokud chcete vytvořit novou třídu uživatele, vyberte + tlačítko pro třídu User a zadejte třídu (napříkladContosoUser
pro společnost s názvem Contoso).
- Výběrem tlačítka Přidat spusťte nástroj scaffolder.
- Pokud máte existující přizpůsobenou stránku rozložení (Identity
Některé Identity možnosti jsou nakonfigurované v Areas/Identity/IdentityHostingStartup.cs
souboru . Další informace najdete na webu IHostingStartup
.
Blazor Klientské aplikace
Blazor Klientské aplikace používají vlastní Identity přístupy k uživatelskému rozhraní a nemůžou používat generování uživatelského rozhraní ASP.NET CoreIdentity. Serverové ASP.NET základní aplikace hostovaných Blazor řešení můžou postupovat podle Razor pokynů pages/MVC v tomto článku a jsou nakonfigurované stejně jako jakýkoli jiný typ aplikace ASP.NET Core, která podporuje Identity.
Architektura Blazor nezahrnuje Razor verze Identity součástí stránek uživatelského rozhraní. Identity Komponenty uživatelského rozhraní Razor můžou být vytvořené nebo získané z nepodporovaných zdrojů třetích stran.
Další informace najdete v tématech Blazor Zabezpečení a Identity články.
Vytvoření úplného Identity zdroje uživatelského rozhraní
Pokud chcete zachovat úplnou kontrolu nad uživatelským Identity rozhraním, spusťte Identity správce uživatelského rozhraní a vyberte Přepsat všechny soubory.
Následující zvýrazněný kód ukazuje změny, které nahradí výchozí Identity uživatelské rozhraní Identity ve webové aplikaci ASP.NET Core 2.1. Můžete to udělat, abyste měli plnou kontrolu nad uživatelským rozhraním Identity .
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<IdentityUser, IdentityRole>()
// services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
options.Conventions.AuthorizeAreaPage("Identity", "/Account/Logout");
});
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/Identity/Account/Login";
options.LogoutPath = $"/Identity/Account/Logout";
options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
});
// using Microsoft.AspNetCore.Identity.UI.Services;
services.AddSingleton<IEmailSender, EmailSender>();
}
Výchozí hodnota Identity se nahradí v následujícím kódu:
services.AddIdentity<IdentityUser, IdentityRole>()
// services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
Následující kód nastaví LoginPathznak , LogoutPatha AccessDeniedPath):
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/Identity/Account/Login";
options.LogoutPath = $"/Identity/Account/Logout";
options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
});
Zaregistrujte implementaci IEmailSender
, například:
// using Microsoft.AspNetCore.Identity.UI.Services;
services.AddSingleton<IEmailSender, EmailSender>();
public class EmailSender : IEmailSender
{
public Task SendEmailAsync(string email, string subject, string message)
{
return Task.CompletedTask;
}
}
Konfigurace hesla
Pokud PasswordOptions jsou nakonfigurovány v Startup.ConfigureServices
, [StringLength]
konfigurace atributu může být vyžadována Password
pro vlastnost na vygenerovaných Identity stránkách. InputModel
Password
vlastnosti jsou nalezeny v následujících souborech:
Areas/Identity/Pages/Account/Register.cshtml.cs
Areas/Identity/Pages/Account/ResetPassword.cshtml.cs
Zakázání stránky
V této části se dozvíte, jak zakázat stránku pro registraci, ale můžete ji použít k zakázání libovolné stránky.
Zakázání registrace uživatele:
Lešení Identity. Zahrnout Account.Register, Account.Login a Account.RegisterConfirmation. Příklad:
dotnet aspnet-codegenerator identity -dc RPauth.Data.ApplicationDbContext --files "Account.Register;Account.Login;Account.RegisterConfirmation"
Aktualizujte
Areas/Identity/Pages/Account/Register.cshtml.cs
, aby se uživatelé nemohli zaregistrovat z tohoto koncového bodu:public class RegisterModel : PageModel { public IActionResult OnGet() { return RedirectToPage("Login"); } public IActionResult OnPost() { return RedirectToPage("Login"); } }
Aktualizujte
Areas/Identity/Pages/Account/Register.cshtml
, aby byly konzistentní s předchozími změnami:@page @model RegisterModel @{ ViewData["Title"] = "Go to Login"; } <h1>@ViewData["Title"]</h1> <li class="nav-item"> <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a> </li>
Zakomentujte nebo odeberte registrační odkaz z
Areas/Identity/Pages/Account/Login.cshtml
@* <p> <a asp-page="./Register" asp-route-returnUrl="@Model.ReturnUrl">Register as a new user</a> </p> *@
Aktualizujte
Areas/Identity/Pages/Account/RegisterConfirmation
stránku.- Odeberte kód a odkazy ze souboru cshtml.
- Odeberte potvrzovací kód z
PageModel
:
[AllowAnonymous] public class RegisterConfirmationModel : PageModel { public IActionResult OnGet() { return Page(); } }
Přidání uživatelů pomocí jiné aplikace
Zadejte mechanismus pro přidání uživatelů mimo webovou aplikaci. Mezi možnosti přidání uživatelů patří:
- Vyhrazená webová aplikace pro správu
- Konzolová aplikace.
Následující kód popisuje jeden přístup k přidávání uživatelů:
- Seznam uživatelů se čte do paměti.
- Pro každého uživatele se vygeneruje silné jedinečné heslo.
- Uživatel se přidá do Identity databáze.
- Uživateli se zobrazí oznámení a bude mu řečeno, aby změnil heslo.
public class Program
{
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<AppDbCntx>();
context.Database.Migrate();
var config = host.Services.GetRequiredService<IConfiguration>();
var userList = config.GetSection("userList").Get<List<string>>();
SeedData.Initialize(services, userList).Wait();
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred adding users.");
}
}
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Následující kód popisuje přidání uživatele:
public static async Task Initialize(IServiceProvider serviceProvider,
List<string> userList)
{
var userManager = serviceProvider.GetService<UserManager<IdentityUser>>();
foreach (var userName in userList)
{
var userPassword = GenerateSecurePassword();
var userId = await EnsureUser(userManager, userName, userPassword);
NotifyUser(userName, userPassword);
}
}
private static async Task<string> EnsureUser(UserManager<IdentityUser> userManager,
string userName, string userPassword)
{
var user = await userManager.FindByNameAsync(userName);
if (user == null)
{
user = new IdentityUser(userName)
{
EmailConfirmed = true
};
await userManager.CreateAsync(user, userPassword);
}
return user.Id;
}
Podobný přístup je možné sledovat v produkčních scénářích.
Zabránění publikování statických Identity prostředků
Pokud chcete zabránit publikování statických Identity prostředků do kořenového adresáře webu, přečtěte si téma Úvod do Identity ASP.NET Core.