Configurer Microsoft.AspNet.L'identité de permettre à l'adresse email comme nom d'utilisateur
Je suis dans le processus de création d'une nouvelle application et a commencé à l'aide de EF6-rc1, Microsoft.AspNet.L'identité.De base de la version 1.0.0-rc1, Microsoft.AspNet.L'identité.EntityFramework 1.0.0-rc1, Microsoft.AspNet.L'identité.Owin 1.0.0-rc1, etc et avec les versions RTM hier, j'ai mis à jour via NuGet, ce soir, pour la RTM.
Mis à part un couple de modifications au code du travail que j'avais fait jusqu'à présent, tout semblait aller pour le mieux, jusqu'à ce que j'ai essayé de créer un compte d'utilisateur local pour l'application.
J'avais travaillé sur les adresses e-mail étant le nom d'utilisateur format qui avec la version release candidate a très bien fonctionné, mais maintenant, lors de la création d'un utilisateur avec une adresse mail, un nom d'utilisateur, il jette à la suite de la validation d'erreur:
User name xxxxx@xxxx.com is invalid, can only contain letters or digits.
J'ai passé la dernière heure à la recherche d'une solution ou de la documentation sur les options de configuration pour elle, mais en vain.
Est il possible que je peux configurer pour autoriser les adresses e-mail pour les noms d'utilisateur?
((UserValidator<ApplicationUser>) UserManager.UserValidator).AllowOnlyAlphanumericUserNames = false;
- double possible de ASP.Net nom d'utilisateur e-Mail
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vous permettre ce qu'en branchant votre propre UserValidator sur le UserManager, ou tout simplement en l'éteignant sur l'implémentation par défaut:
public AccountController(UserManager<ApplicationUser> userManager)
constructeur ajouterUserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager) { AllowOnlyAlphanumericUserNames = false };
Le C# version de ce (dans App_Code\IdentityModels.cs) est
Dans mon cas, l'exécution de VS 2013 C#, MVC, 5.2.2, à l'aide de ASP.NET Identité 2.0, la solution a été mise à jour le ApplicationUserManager constructeur à l'intérieur de App_Start\IdentityConfig.cs comme suit:
Si vous utilisez ASP.Net webforms et essayez d'accomplir cela, il vous suffit d'ouvrir votre IdentityModels.vb/cs fichier et sous la Classe Publique UserManager, il faut la regarder comme ça:
Pour les personnes sur le Réseau.L'identité.De base de la version 2.1, ces validateurs dans le UserManager sont en lecture seule. Adresses e-mail que les noms d'utilisateur sont autorisés par défaut, mais si vous avez besoin de plus de personnalisation des personnages de vos identifiants, vous pouvez le faire en Démarrage.cs comme ceci:
(J'avais besoin d'un '/' pour des raisons d'héritage.)
Si vous ne trouvez pas IdentityConfig.cs puis remplacez votre AccountController constructeur avec ce code.
Dans mon cas, j'ai eu une classe de référentiel de travail avec l'authentification, qui ne me laisse pas utiliser un "-" à l'intérieur des noms d'utilisateur.. Le correctif était à l'intérieur du constructeur ici:
J'ai aussi été coincé avec ce parce que la plupart du temps les noms d'utilisateur sont des E-mails de ces jours, je peux comprendre le raisonnement d'un E-mail séparé terrain. Ces derniers sont purement mes pensées /expérience que je n'arrivais pas à trouver de Microsoft dire sur ce.
Rappelez-vous, Asp Identité est purement pour identifier quelqu'un, vous n'avez pas à avoir une adresse E-mail pour être identifiées, mais elles nous permettent de stocker parce qu'il fait partie d'une pièce d'identité. Lorsque vous créez un nouveau projet web dans visual studio, vous avez l'option pour les options d'authentification.
Si vous sélectionnez non vide type de projet tels que MVC et définissez le mode d'authentification "comptes Individuels", alors vous êtes donné les fondements de base pour la gestion des utilisateurs. Qui comprend une sous-classe comme ceci dans App_Start\IdentityConfig.cs:
Ce que cela nous dit, c'est que Microsoft a l'intention de nous pour stocker plus complexe des noms d'utilisateur (reportez-vous à AllowOnlyAlphaNumericUserNames = false), si vraiment nous avons des signaux mitigés.
Le fait, c'est générée à partir d'un défaut de projet web nous donne une bonne indication /direction de Microsoft (et propre) afin de nous permettre de saisir les E-mails dans le champ nom d'utilisateur. C'est propre, parce que la méthode create statique est utilisé dans le App_Start\Démarrage.Auth.cs lorsque le démarrage de l'application avec Microsoft.OWIN contexte.
Le seul inconvénient de cette approche est, en fin de stocker l'adresse E-mail deux fois.... Ce qui n'est pas bon!!!
Comme vous l'avez probablement trouvé (et c'était à prévoir), ASP.NET l'Identité 2.0.0, publié en Mars 2014, ajoute cette fonctionnalité dans le cadre.
Annonce: http://blogs.msdn.com/b/webdev/archive/2014/03/20/test-announcing-rtm-of-asp-net-identity-2-0-0.aspx
Exemple complet et un tutoriel, y compris la confirmation du compte: http://www.asp.net/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity
Si vous utilisez du CIO, de la sorte ( je suis à l'aide de StructureMap) dans votre compte contrôleur, vous devez appliquer le correctif mentionné ci-dessus par Hao Kung lorsque le Usermanager est passé:
(J'ai dû). Il y a peut être un moyen de le faire dans les CIO de l'installation, mais je ne sais pas comment.
Que j'ai rencontré le même problème . mais finalement j'ai résolu le problème en ajoutant soufflet partie de ma méthode , pas le constructeur .
Depuis le codage de mon propre ApplicationUserManager : UserManager classe n'a pas de travail pour moi (peut-être bc-je utiliser de Rasoir Pages, pas de MVC), voici une autre solution: En Démarrage.cs dans CofigureServices (), vous pouvez configurer les Options d'Identité, par exemple:
Plus sur ce sujet dans Microsoft docs: https://docs.microsoft.com/de-de/aspnet/core/security/authentication/identity-configuration?view=aspnetcore-2.2
J'ai eu le même problème, quand j'ai essayé de modifier le code pour faire le nom d'utilisateur est le nom réel de la personne et non pas l'e-mail, le système me montrer le même message d'erreur "nom d'Utilisateur ABC DEF n'est pas valide, ne peut contenir que des lettres ou des chiffres." J'ai résolu le problème en ajoutant le caractère espace (Dans mon cas à la fin) à AllowedUserNameCharacters.
Im en utilisant Asp.Net Noyau 2.2 et VS2017
C'est mon code
Aller de Démarrage.cs et modifier ou ajouter la ligne "//les paramètres de l'utilisateur":