web-dev-qa-db-fra.com

Comment modifier l'interface utilisateur d'identité asp.net pour l'API Web principale asp.net avec angular

J'ai commencé à apprendre le noyau .net il y a quelques jours et pour commencer, j'ai créé un projet .netcore avec un angular 8 modèles.

Il a quelques pages construites en angulaire, comme les données de compteur et de récupération, etc., mais toutes les pages liées à l'identité (connexion, enregistrement, etc.) proviennent d'un simple HTML du backend. Donc "ma principale préoccupation est d'apporter des modifications à l'interface utilisateur dans cette page".

J'ai découvert que l'identité a été ajoutée à la bibliothèque de classes et n'est donc pas visible dans le code backend. et Afin d'y apporter des modifications, je devrai d'abord l'ajouter au code en le régénérant via un échafaudage. cela remplacera le code de bibliothèque précédent et peut être modifié selon les exigences.

J'ai donc sélectionné ajouter un nouvel élément échafaudé -> identité. et sélectionné "remplacer tous les fichiers" lors de la première tentative et "compte\connexion" et "compte\s'inscrire" uniquement lors de la deuxième tentative, et applicationdbcontext pour dbcontext. mais malheureusement ni l'un ni l'autre n'a fonctionné pour moi.

Lorsque j'essaie de créer le code, j'obtiens cette erreur

Error   CS0246  The type or namespace name 'IWebHostEnvironment' could not be found (are you missing a using directive or an Assembly reference?)   

C:\Users\MyUserName\source\repos\MyProjectName\obj\Debug\netcoreapp3.0\Razor\Pages\Shared\_Layout.cshtml.g.cs   448

Je ne sais pas vraiment ce qu'est l'extension .g.cs, il n'y a pas de déclaration d'importation sur cette page et un code bizarre que je n'ai jamais vu auparavant. la page elle-même n'a également montré aucune erreur/marquage rouge.

Je veux essentiellement réaliser deux choses ici,

1) en utilisant complètement l'application de base .net comme une API, je veux créer une interface utilisateur pour toutes les choses liées à la connexion dans angular lui-même plutôt que d'obtenir en HTML du back-end.

2) ajouter quelques champs supplémentaires dans le formulaire de connexion utilisateur. et comme il s'agit d'abord de code, puis de modifier les utilisateurs DBSet (ce que je ne sais pas faire dans ce cas).

Je n'ai ajouté aucun exemple de code car c'est une sorte de problème/question simple. pour reproduire le problème, il suffit de créer un projet dans .net core 3.0 et de prendre un angular 8 modèles. essayez maintenant d'apporter toute modification liée à l'interface utilisateur sur la page de connexion ou d'enregistrement.

4
Mohammed Khan

il suffit de consulter le guide de https://devblogs.Microsoft.com/aspnet/aspnetcore-2-1-identity-ui/ et il s'applique également au nouveau noyau 3 angular 8 Projet de modèle qui prennent également en charge l'authentification Angular.

une chose qui est un peu différente était la méthode publique async Task OnPostAsync () sur le fichier Areas.Identity.Pages.Account.Manage.Index.cshtml.cs qui sert à prendre en charge la mise à jour du nom de l'utilisateur dans son profil.

Par conséquent, la comparaison de votre modèle échafaudé avec l'exemple ci-dessous peut aider à utiliser UpdateAsync au lieu du précédent appel simple SetPhoneNumberAsync.

if (Input.PhoneNumber != phoneNumber || Input.Name != user.FullName)
{
    user.FullName = Input.Name;
    user.PhoneNumber = Input.PhoneNumber;

    var updateProfileResult = await _userManager.UpdateAsync(user);
    if (!updateProfileResult.Succeeded)
    {
        throw new InvalidOperationException($"Unexpected error ocurred updating the profile for user with ID '{user.Id}'");
    }
}
0
Iman Abidi