web-dev-qa-db-fra.com

Où se trouvent les pages de connexion et d'enregistrement dans une application échafaudée AspNet Core?

Dans VS 2017, j'ai créé une nouvelle application Web ASP.NET Core. Sur la deuxième page de l'assistant, j'ai choisi l'application Web et, pour l'authentification, j'ai choisi "Comptes d'utilisateurs individuels".

Maintenant, j'essaie de trouver les pages associées à/Account/Register et/Account/Login .

_Layout.cshtml introduit _LoginPartial.cshtml, comme dans MVC classique:

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

Si l'utilisateur n'est pas connecté, _LoginPartial inclut les balises <a> qui pointent vers les pages de connexion et d'enregistrement:

<ul class="nav navbar-nav navbar-right">
    <li><a asp-area="Identity" asp-page="/Account/Register">Register</a></li>
    <li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
</ul>

Tout cela semble avoir du sens. Mais je me serais attendu à ce que la structure du dossier Areas inclue les dossiers Register et Login. Ce ne est pas. La seule chose que je trouve là est _ViewStart.cshtml

Areas file structure

Je sais que le code échafaudé fonctionne. Lorsque je lance le projet, le lien Enregistrer pointe vers "/ Identity/Account/Register" et le lien Connexion désigne "/ Identity/Account/Login". En cliquant sur le lien S'inscrire, je reçois une page d'inscription contenant le texte "Créer un nouveau compte".

Mais je ne trouve pas le texte "Créer un nouveau compte" dans le projet.

Quelqu'un peut-il me dire ce que je manque?

66

Lors de la présentation de asp.net core 2.1, il a été annoncé que l'interface utilisateur d'Identity serait déplacée vers une nouvelle bibliothèque de classes Razor. https://blogs.msdn.Microsoft.com/webdev/2018/03/02/aspnetcore-2-1-identity-ui/

Il est toujours possible d'intégrer les vues d'identité à votre propre projet si vous préférez des vues locales: https://docs.Microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view = aspnetcore-2.1 & tabs = visual-studio

68
Joe Audette

ASP.NET Core 2.1 avec Identity inclut automatiquement "l'interface utilisateur par défaut". C'est une bibliothèque de classe Razor Pages qui est référencée via AddDefaultIdentity dans Startup, qui appelle littéralement sous le capot

Si vous voulez les fichiers réels de votre projet, vous devez les échafauder. Cliquez avec le bouton droit de la souris sur votre projet dans l'explorateur de solutions et choisissez Ajouter> Nouvel élément échafaudé ... Ensuite, cliquez sur la liste Identité à gauche, puis sur le bouton Ajouter. . Une nouvelle fenêtre apparaîtra vous permettant de sélectionner les pages que vous souhaitez inclure, votre contexte, etc. Configurez-le comme vous le souhaitez et

Il est également intéressant de noter que tant que vous utilisez AddDefaultIdentity, l'interface utilisateur par défaut est toujours incluse, ce qui signifie que vous n'avez pas réellement besoin de tous les fichiers échafaudés si vous en voulez. Ils fonctionneront essentiellement comme des substitutions. Tout ce qui est spécifiquement inclus dans votre projet sera utilisé, tandis que tout ce qui manque sera extrait de l'interface utilisateur par défaut.

Cela signifie également que si vous souhaitez utiliser des actions et des vues de contrôleur standard au lieu de Razor Pages, l'interface utilisateur par défaut sera toujours active et prioritaire. Vous devez utiliser AddIdentity ou AddIdentityCore au lieu de AddDefaultIdentity si vous souhaitez désactiver complètement l'interface utilisateur par défaut.

à partir de

12
panky sharma

'Si vous souhaitez que tout le code d'identité se trouve dans votre application afin de pouvoir le modifier à votre guise, vous pouvez utiliser le nouveau scaffolder d'identité pour ajouter le code d'identité à votre application. Tout le code d'identité échafaudé est généré dans un dossier de zone spécifique à l'identité, de sorte qu'il reste bien séparé du code de votre application. '

https://blogs.msdn.Microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#identity

Cela fonctionne assez bien et facile pour moi.

4
GioLopera

Vous pouvez générer ces pages en utilisant cette commande:

dotnet aspnet-codegenerator identity -dc WebApplication1.Data.ApplicationDbContext

Assurez-vous de remplacer par votre propre espace de nom + nom DbContext. Les pages sont générées ici:

enter image description here


Si vous voyez ce problème:

La fonctionnalité 'littéral par défaut' n'est pas disponible en C # 7.0. Veuillez utiliser la version linguistique 7.1 ou supérieure.

Vous pourrez peut-être résoudre le problème en ajoutant ceci à vous .csproj et en le reconstruisant:

<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="3.2.0-beta3-final" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.2.0-beta3-final" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.2.0-beta3-final" />
2
Alisson

Un peu tard dans la soirée, mais après des frustrations avec l'interface utilisateur d'identité, j'ai abandonné. Créez vos projets sans cela. Mon conseil est (en utilisant 2.1 ou 2.2) de créer votre propre compte/gérer les contrôleurs et les pages mvc. Un débogage startup.cs sera nécessaire. Désactivez également l'option de compilation Publier la vue (i.e. views.dll). Peut-être que je n'ai pas d'option définie mais le compilateur ignore complètement les modifications apportées aux blocs de script au niveau de la page.

0
Will Hunt