Dans VS 2017, j'ai créé une nouvelle application Web ASP.NET Core. Sur la deuxième page de l'assistant, j'ai choisi Application Web, et pour l'authentification, j'ai choisi "Comptes d'utilisateurs individuels".
Maintenant, j'essaie de trouver les pages associées à / Compte / Inscription et / Compte / Connexion .
_Layout.cshtml apporte _LoginPartial.cshtml, tout comme il l'a fait 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 des <a>
balises 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 logique. 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à-bas est _ViewStart.cshtml
Je sais que le code échafaudé fonctionne. Lorsque je lance le projet, le lien Register pointe vers "/ Identity / Account / Register" et le lien Login pointe vers "/ Identity / Account / Login". En cliquant sur le lien S'inscrire, j'obtiens une page d'inscription qui comprend le texte «Créer un nouveau compte».
Mais je ne trouve le texte "Créer un nouveau compte" nulle part dans le projet.
Quelqu'un peut-il me dire ce que je manque?
la source
Vous pouvez le faire à partir de Visual Studio, cliquez avec le bouton droit sur votre projet et sélectionnez Ajouter-> Nouvel élément scaffolded
Puis sélectionnez Identité et cliquez sur Ajouter
Sélectionnez maintenant les pages que vous souhaitez remplacer. Classe de contexte de données déroulante : et votre espace de nom et votre contexte doivent être pré-remplis pour vous.
Cliquez enfin sur Ajouter. Si vous avez déjà des fichiers de remplacement existants (c'est-à-dire à partir du modèle), cela vous avertira de les écraser.
la source
Cliquez avec le bouton droit sur le projet, sélectionnez
Add -> New Scaffold Item
, dans la boîte de dialogue sélectionnez Identité dans le volet gauche.Vous pouvez également générer ces pages à l'aide de cette commande:
Assurez-vous de remplacer par votre propre espace de noms + nom DbContext. Les pages sont générées ici:
Si vous voyez ce problème:
Vous pourrez peut-être le réparer en vous ajoutant ceci
.csproj
et en le reconstruisant:la source
WebApplication1.Data.ApplicationDbContext
par l'espace de noms et le nom de fichier corrects?dotnet aspnet-codegenerator
. C'est peut-être le problème?«Si vous souhaitez que tout le code d'identité se trouve dans votre application afin de pouvoir le modifier comme vous le souhaitez, vous pouvez utiliser le nouvel échafaudage 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é afin 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 facilement pour moi.
la source
Un peu tard à la fête, mais après des frustrations avec l'interface utilisateur d'identité, j'ai abandonné. Créez vos projets sans cela. Mon conseil est (lors de l'utilisation de 2.1 ou 2.2) de créer votre propre compte / gérer les contrôleurs et les pages mvc. Un certain débogage de startup.cs sera nécessaire. Désactivez également l'option de compilation de l'affichage de publication (c'est-à-dire views.dll). Peut-être que je n'ai pas de jeu d'options, mais le compilateur ignore complètement tout changement dans les blocs de script au niveau de la page.
la source