Identité d’une structure de projets ASP.NET CoreScaffold Identity in ASP.NET Core projects

Par Rick AndersonBy Rick Anderson

ASP.NET Core 2.1 et versions ultérieures offre ASP.NET Core Identity comme un bibliothèque de classes Razor.ASP.NET Core 2.1 and later provides ASP.NET Core Identity as a Razor Class Library. Les applications qui incluent l’identité peuvent s’appliquer à la génération de modèles automatique pour ajouter du code source contenu dans la bibliothèque de classes Razor (RCL) identité de façon sélective.Applications that include Identity can apply the scaffolder to selectively add the source code contained in the Identity Razor Class Library (RCL). Vous pouvez souhaiter générer le code source afin de pouvoir modifier le code et changer le comportement.You might want to generate source code so you can modify the code and change the behavior. Par exemple, vous pouvez demander au générateur de modèles automatique de générer le code utilisé dans l’inscription.For example, you could instruct the scaffolder to generate the code used in registration. Le code généré est prioritaire sur le même code dans la bibliothèque de classes Razor d’identité.Generated code takes precedence over the same code in the Identity RCL. Pour obtenir le contrôle intégral de l’interface utilisateur et n’utilisez pas la valeur par défaut RCL, consultez la section créer une source de l’interface utilisateur complète identité.To gain full control of the UI and not use the default RCL, see the section Create full identity UI source.

Les applications qui effectuent pas incluent l’authentification peut s’appliquer à la génération de modèles automatique pour ajouter le package RCL identité.Applications that do not include authentication can apply the scaffolder to add the RCL Identity package. Vous pouvez sélectionner le code d’identité à générer.You have the option of selecting Identity code to be generated.

Bien que le Générateur de modèles automatique génère la plupart du code nécessaire, vous devrez mettre à jour votre projet pour terminer le processus.Although the scaffolder generates most of the necessary code, you'll have to update your project to complete the process. Ce document explique les étapes nécessaires pour effectuer une mise à jour de la génération de modèles automatique identité.This document explains the steps needed to complete an Identity scaffolding update.

Lorsque le Générateur de modèles automatique identité est exécuté, un ScaffoldingReadme.txt fichier est créé dans le répertoire du projet.When the Identity scaffolder is run, a ScaffoldingReadme.txt file is created in the project directory. Le ScaffoldingReadme.txt fichier contient des instructions générales sur ce qui est nécessaire pour terminer la mise à jour de la génération de modèles automatique identité.The ScaffoldingReadme.txt file contains general instructions on what's needed to complete the Identity scaffolding update. Ce document contient des instructions plus complètes que les ScaffoldingReadme.txt fichier.This document contains more complete instructions than the ScaffoldingReadme.txt file.

Nous vous recommandons d’utiliser un système de contrôle de source qui illustre les différences entre les fichiers et vous permet d’annuler les modifications.We recommend using a source control system that shows file differences and allows you to back out of changes. Examiner les modifications après l’exécution de la génération de modèles automatique identité.Inspect the changes after running the Identity scaffolder.

Notes

Services sont requis lorsque vous utilisez authentification à deux facteurs, confirmation et le mot de passe de récupération de compteet d’autres fonctionnalités de sécurité avec l’identité.Services are required when using Two Factor Authentication, Account confirmation and password recovery, and other security features with Identity. Services ou stubs de service ne sont pas générés lors de la génération de modèles automatique identité.Services or service stubs aren't generated when scaffolding Identity. Services pour activer ces fonctionnalités doivent être ajoutés manuellement.Services to enable these features must be added manually. Par exemple, consultez nécessitent une Confirmation de courrier électronique.For example, see Require Email Confirmation.

Identité d’une structure dans un projet videScaffold identity into an empty project

Exécutez le Générateur de modèles automatique identité :Run the Identity scaffolder:

  • À partir de l’Explorateur de solutions, avec le bouton droit sur le projet > ajouter > nouvel élément structuré.From Solution Explorer, right-click on the project > Add > New Scaffolded Item.
  • Dans le volet gauche de la ajouter une structure boîte de dialogue, sélectionnez identité > ajouter.From the left pane of the Add Scaffold dialog, select Identity > ADD.
  • Dans le identité ADD boîte de dialogue, sélectionnez les options souhaitées.In the ADD Identity dialog, select the options you want.
    • Sélectionnez votre page de disposition existante, ou votre fichier de disposition est remplacée par balisage incorrect.Select your existing layout page, or your layout file will be overwritten with incorrect markup. Par exemple ~/Pages/Shared/_Layout.cshtml pour les Pages Razor ~/Views/Shared/_Layout.cshtml pour les projets MVCFor example ~/Pages/Shared/_Layout.cshtml for Razor Pages ~/Views/Shared/_Layout.cshtml for MVC projects
    • Sélectionnez le + bouton pour créer un nouveau classe de contexte de données.Select the + button to create a new Data context class.
  • Sélectionnez ajouter.Select ADD.

Ajoutez les appels en surbrillance suivants à la Startup classe :Add the following highlighted calls to the Startup class:

public class Startup
{        
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseAuthentication();
        app.UseMvc();
    }
}

UseHsts est recommandé mais pas obligatoire.UseHsts is recommended but not required. Consultez protocole HTTP Strict Transport Security pour plus d’informations.See HTTP Strict Transport Security Protocol for more information.

Le code de base de données d’identité généré nécessite Migrations Entity Framework Core.The generated Identity database code requires Entity Framework Core Migrations. Créer une migration et mettre à jour de la base de données.Create a migration and update the database. Par exemple, exécutez les commandes suivantes :For example, run the following commands:

Dans Visual Studio Console du Gestionnaire de Package:In the Visual Studio Package Manager Console:

Add-Migration CreateIdentitySchema
Update-Database

Le paramètre de nom de « CreateIdentitySchema » pour le Add-Migration commande est arbitraire.The "CreateIdentitySchema" name parameter for the Add-Migration command is arbitrary. "CreateIdentitySchema" Décrit la migration."CreateIdentitySchema" describes the migration.

Identité d’une structure dans un projet Razor sans autorisation existantScaffold identity into a Razor project without existing authorization

Exécutez le Générateur de modèles automatique identité :Run the Identity scaffolder:

  • À partir de l’Explorateur de solutions, avec le bouton droit sur le projet > ajouter > nouvel élément structuré.From Solution Explorer, right-click on the project > Add > New Scaffolded Item.
  • Dans le volet gauche de la ajouter une structure boîte de dialogue, sélectionnez identité > ajouter.From the left pane of the Add Scaffold dialog, select Identity > ADD.
  • Dans le identité ADD boîte de dialogue, sélectionnez les options souhaitées.In the ADD Identity dialog, select the options you want.
    • Sélectionnez votre page de disposition existante, ou votre fichier de disposition est remplacée par balisage incorrect.Select your existing layout page, or your layout file will be overwritten with incorrect markup. Par exemple ~/Pages/Shared/_Layout.cshtml pour les Pages Razor ~/Views/Shared/_Layout.cshtml pour les projets MVCFor example ~/Pages/Shared/_Layout.cshtml for Razor Pages ~/Views/Shared/_Layout.cshtml for MVC projects
    • Sélectionnez le + bouton pour créer un nouveau classe de contexte de données.Select the + button to create a new Data context class.
  • Sélectionnez ajouter.Select ADD.

Identité est configurée dans Areas/Identity/IdentityHostingStartup.cs.Identity is configured in Areas/Identity/IdentityHostingStartup.cs. Pour plus d’informations, consultez IHostingStartup.for more information, see IHostingStartup.

Migrations, UseAuthentication et la dispositionMigrations, UseAuthentication, and layout

Le code de base de données d’identité généré nécessite Migrations Entity Framework Core.The generated Identity database code requires Entity Framework Core Migrations. Créer une migration et mettre à jour de la base de données.Create a migration and update the database. Par exemple, exécutez les commandes suivantes :For example, run the following commands:

Dans Visual Studio Console du Gestionnaire de Package:In the Visual Studio Package Manager Console:

Add-Migration CreateIdentitySchema
Update-Database

Le paramètre de nom de « CreateIdentitySchema » pour le Add-Migration commande est arbitraire.The "CreateIdentitySchema" name parameter for the Add-Migration command is arbitrary. "CreateIdentitySchema" Décrit la migration."CreateIdentitySchema" describes the migration.

Activer l’authentificationEnable authentication

Dans le Configure méthode de la Startup classe, appelez UseAuthentication après UseStaticFiles:In the Configure method of the Startup class, call UseAuthentication after UseStaticFiles:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseAuthentication();

        app.UseMvc();
    }
}

UseHsts est recommandé mais pas obligatoire.UseHsts is recommended but not required. Consultez protocole HTTP Strict Transport Security pour plus d’informations.See HTTP Strict Transport Security Protocol for more information.

Changements de dispositionLayout changes

Facultatif : Ajouter la connexion partielle (_LoginPartial) pour le fichier de disposition :Optional: Add the login partial (_LoginPartial) to the layout file:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - RazorNoAuth8</title>

    <environment include="Development">
        <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
        <link rel="stylesheet" href="~/css/site.css" />
    </environment>
    <environment exclude="Development">
        <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"
              asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
              asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
        <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
    </environment>
</head>
<body>
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a asp-page="/Index" class="navbar-brand">RazorNoAuth8</a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a asp-page="/Index">Home</a></li>
                    <li><a asp-page="/About">About</a></li>
                    <li><a asp-page="/Contact">Contact</a></li>
                </ul>
                <partial name="_LoginPartial" />
            </div>
        </div>
    </nav>

    <partial name="_CookieConsentPartial" />

    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; 2018 - RazorNoAuth8</p>
        </footer>
    </div>

    <environment include="Development">
        <script src="~/lib/jquery/dist/jquery.js"></script>
        <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
        <script src="~/js/site.js" asp-append-version="true"></script>
    </environment>
    <environment exclude="Development">
        <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.3.1.min.js"
                asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
                asp-fallback-test="window.jQuery"
                crossorigin="anonymous"
                integrity="sha384-K+ctZQ+LL8q6tP7I94W+qzQsfRV2a+AfHIi9k8z8l9ggpc8X+Ytst4yBo/hH+8Fk">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"
                asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
                asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
                crossorigin="anonymous"
                integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa">
        </script>
        <script src="~/js/site.min.js" asp-append-version="true"></script>
    </environment>

    @RenderSection("Scripts", required: false)
</body>
</html>

Identité d’une structure dans un projet Razor disposant d’autorisationsScaffold identity into a Razor project with authorization

Exécutez l’échafaudage d’identité:Run the Identity scaffolder:

  • À partir de l’Explorateur de solutions, avec le bouton droit sur le projet > ajouter > nouvel élément structuré.From Solution Explorer, right-click on the project > Add > New Scaffolded Item.
  • Dans le volet gauche de la boîte de dialogue Ajouter une structure , sélectionnez identité > Ajouter.From the left pane of the Add Scaffold dialog, select Identity > Add.
  • Dans la boîte de dialogue Ajouter une identité , sélectionnez les options souhaitées.In the Add Identity dialog, select the options you want.
    • Sélectionnez votre page de disposition existante, ou votre fichier de disposition sera remplacé par un balisage incorrect.Select your existing layout page, or your layout file will be overwritten with incorrect markup. Lorsqu’un fichier _Layout. cshtml existant est sélectionné, il n’est pas remplacé.When an existing _Layout.cshtml file is selected, it is not overwritten.

Par exemple: ~/Pages/Shared/_Layout.cshtml for Razor pages ~/Views/Shared/_Layout.cshtml pour les projets MVCFor example: ~/Pages/Shared/_Layout.cshtml for Razor Pages ~/Views/Shared/_Layout.cshtml for MVC projects

  • Pour utiliser le contexte de données existant, sélectionnez au moins un fichier à substituer.To use your existing data context, select at least one file to override. Vous devez sélectionner au moins un fichier pour ajouter votre contexte de données.You must select at least one file to add your data context.
    • Sélectionnez votre classe de contexte de données.Select your data context class.
    • Sélectionnez Ajouter.Select Add.
  • Pour créer un nouveau contexte utilisateur et éventuellement créer une classe d’utilisateur personnalisée pour l’identité:To create a new user context and possibly create a custom user class for Identity:
    • Sélectionnez le + bouton pour créer un nouveau classe de contexte de données.Select the + button to create a new Data context class.
    • Sélectionnez Ajouter.Select Add.

Remarque : Si vous créez un nouveau contexte utilisateur, vous n’êtes pas obligé de sélectionner un fichier à remplacer.Note: If you're creating a new user context, you don't have to select a file to override.

Certaines options d’identité sont configurées dans Areas/Identity/IdentityHostingStartup.cs.Some Identity options are configured in Areas/Identity/IdentityHostingStartup.cs. Pour plus d’informations, consultez IHostingStartup.For more information, see IHostingStartup.

Identité d’une structure dans un projet MVC sans autorisation existantScaffold identity into an MVC project without existing authorization

Exécutez le Générateur de modèles automatique identité :Run the Identity scaffolder:

  • À partir de l’Explorateur de solutions, avec le bouton droit sur le projet > ajouter > nouvel élément structuré.From Solution Explorer, right-click on the project > Add > New Scaffolded Item.
  • Dans le volet gauche de la ajouter une structure boîte de dialogue, sélectionnez identité > ajouter.From the left pane of the Add Scaffold dialog, select Identity > ADD.
  • Dans le identité ADD boîte de dialogue, sélectionnez les options souhaitées.In the ADD Identity dialog, select the options you want.
    • Sélectionnez votre page de disposition existante, ou votre fichier de disposition est remplacée par balisage incorrect.Select your existing layout page, or your layout file will be overwritten with incorrect markup. Par exemple ~/Pages/Shared/_Layout.cshtml pour les Pages Razor ~/Views/Shared/_Layout.cshtml pour les projets MVCFor example ~/Pages/Shared/_Layout.cshtml for Razor Pages ~/Views/Shared/_Layout.cshtml for MVC projects
    • Sélectionnez le + bouton pour créer un nouveau classe de contexte de données.Select the + button to create a new Data context class.
  • Sélectionnez ajouter.Select ADD.

Facultatif : Ajouter la connexion partielle (_LoginPartial) pour le Views/Shared/_Layout.cshtml fichier :Optional: Add the login partial (_LoginPartial) to the Views/Shared/_Layout.cshtml file:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - MvcNoAuth3</title>

    <environment include="Development">
        <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
        <link rel="stylesheet" href="~/css/site.css" />
    </environment>
    <environment exclude="Development">
        <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"
              asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
              asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
        <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
    </environment>
</head>
<body>
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">MvcNoAuth3</a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="About">About</a></li>
                    <li><a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a></li>
                </ul>
                <partial name="_LoginPartial" />
            </div>
        </div>
    </nav>

    <partial name="_CookieConsentPartial" />

    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; 2018 - MvcNoAuth3</p>
        </footer>
    </div>

    <environment include="Development">
        <script src="~/lib/jquery/dist/jquery.js"></script>
        <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
        <script src="~/js/site.js" asp-append-version="true"></script>
    </environment>
    <environment exclude="Development">
        <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.3.1.min.js"
                asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
                asp-fallback-test="window.jQuery"
                crossorigin="anonymous"
                integrity="sha384-K+ctZQ+LL8q6tP7I94W+qzQsfRV2a+AfHIi9k8z8l9ggpc8X+Ytst4yBo/hH+8Fk">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"
                asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
                asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
                crossorigin="anonymous"
                integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa">
        </script>
        <script src="~/js/site.min.js" asp-append-version="true"></script>
    </environment>

    @RenderSection("Scripts", required: false)
</body>
</html>
  • Déplacer le Pages/Shared/_LoginPartial.cshtml fichier Views/Shared/_LoginPartial.cshtmlMove the Pages/Shared/_LoginPartial.cshtml file to Views/Shared/_LoginPartial.cshtml

Identité est configurée dans Areas/Identity/IdentityHostingStartup.cs.Identity is configured in Areas/Identity/IdentityHostingStartup.cs. Pour plus d’informations, consultez IHostingStartup.For more information, see IHostingStartup.

Le code de base de données d’identité généré nécessite Migrations Entity Framework Core.The generated Identity database code requires Entity Framework Core Migrations. Créer une migration et mettre à jour de la base de données.Create a migration and update the database. Par exemple, exécutez les commandes suivantes :For example, run the following commands:

Dans Visual Studio Console du Gestionnaire de Package:In the Visual Studio Package Manager Console:

Add-Migration CreateIdentitySchema
Update-Database

Le paramètre de nom de « CreateIdentitySchema » pour le Add-Migration commande est arbitraire.The "CreateIdentitySchema" name parameter for the Add-Migration command is arbitrary. "CreateIdentitySchema" Décrit la migration."CreateIdentitySchema" describes the migration.

Appelez UseAuthentication après UseStaticFiles:Call UseAuthentication after UseStaticFiles:

public class Startup
{

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseAuthentication();
        app.UseMvcWithDefaultRoute();
    }
}

UseHsts est recommandé mais pas obligatoire.UseHsts is recommended but not required. Consultez protocole HTTP Strict Transport Security pour plus d’informations.See HTTP Strict Transport Security Protocol for more information.

Identité d’une structure dans un projet MVC avec l’autorisationScaffold identity into an MVC project with authorization

Exécutez l’échafaudage d’identité:Run the Identity scaffolder:

  • À partir de l’Explorateur de solutions, avec le bouton droit sur le projet > ajouter > nouvel élément structuré.From Solution Explorer, right-click on the project > Add > New Scaffolded Item.
  • Dans le volet gauche de la boîte de dialogue Ajouter une structure , sélectionnez identité > Ajouter.From the left pane of the Add Scaffold dialog, select Identity > Add.
  • Dans la boîte de dialogue Ajouter une identité , sélectionnez les options souhaitées.In the Add Identity dialog, select the options you want.
    • Sélectionnez votre page de disposition existante, ou votre fichier de disposition sera remplacé par un balisage incorrect.Select your existing layout page, or your layout file will be overwritten with incorrect markup. Lorsqu’un fichier _Layout. cshtml existant est sélectionné, il n’est pas remplacé.When an existing _Layout.cshtml file is selected, it is not overwritten.

Par exemple: ~/Pages/Shared/_Layout.cshtml for Razor pages ~/Views/Shared/_Layout.cshtml pour les projets MVCFor example: ~/Pages/Shared/_Layout.cshtml for Razor Pages ~/Views/Shared/_Layout.cshtml for MVC projects

  • Pour utiliser le contexte de données existant, sélectionnez au moins un fichier à substituer.To use your existing data context, select at least one file to override. Vous devez sélectionner au moins un fichier pour ajouter votre contexte de données.You must select at least one file to add your data context.
    • Sélectionnez votre classe de contexte de données.Select your data context class.
    • Sélectionnez Ajouter.Select Add.
  • Pour créer un nouveau contexte utilisateur et éventuellement créer une classe d’utilisateur personnalisée pour l’identité:To create a new user context and possibly create a custom user class for Identity:
    • Sélectionnez le + bouton pour créer un nouveau classe de contexte de données.Select the + button to create a new Data context class.
    • Sélectionnez Ajouter.Select Add.

Remarque : Si vous créez un nouveau contexte utilisateur, vous n’êtes pas obligé de sélectionner un fichier à remplacer.Note: If you're creating a new user context, you don't have to select a file to override.

Supprimer le Pages/Shared dossier et les fichiers dans ce dossier.Delete the Pages/Shared folder and the files in that folder.

Créer la source de l’interface utilisateur d’identité complèteCreate full identity UI source

Pour conserver le contrôle intégral de l’interface utilisateur d’identité, exécutez le Générateur de modèles automatique identité et sélectionnez remplacer tous les fichiers.To maintain full control of the Identity UI, run the Identity scaffolder and select Override all files.

Le code en surbrillance suivant montre les modifications apportées à remplacer la valeur par défaut de l’interface utilisateur de l’identité avec l’identité dans une application web de ASP.NET Core 2.1.The following highlighted code shows the changes to replace the default Identity UI with Identity in an ASP.NET Core 2.1 web app. Vous souhaiterez peut-être effectuer cette opération pour avoir un contrôle total de l’interface utilisateur d’identité.You might want to do this to have full control of the Identity UI.

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().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
        .AddRazorPagesOptions(options =>
        {
            options.AllowAreas = true;
            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>();
}

L’identité par défaut est remplacé dans le code suivant :The default Identity is replaced in the following code:

services.AddIdentity<IdentityUser, IdentityRole>()
    // services.AddDefaultIdentity<IdentityUser>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

Le code suivant définit la LoginPath, valeur de LogoutPath, et AccessDeniedPath:The following code sets the LoginPath, LogoutPath, and AccessDeniedPath:

services.ConfigureApplicationCookie(options =>
{
    options.LoginPath = $"/Identity/Account/Login";
    options.LogoutPath = $"/Identity/Account/Logout";
    options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
});

Inscrire un IEmailSender implémentation, par exemple :Register an IEmailSender implementation, for example:

// 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;
    }
}

Ressources supplémentairesAdditional resources