ASP.Net nom d'utilisateur e-Mail
Je suis en train de travailler avec le nouveau ASP.NET Identité (RTM) et je me demandais comment pourrais-je aller sur le sujet de la modification de l'inscription et de connexion d'un utilisateur à un e-Mail.
L'idée est que je veux que mes utilisateurs à s'inscrire à l'aide de leur adresse e-mail et un mot de passe e-mail peut également être acquis en utilisant un login) et ils ont mis en place un affichage du nom/nom d'utilisateur sur le dessus.
J'ai regardé IdentityUser et je peux voir que le nom d'utilisateur est-il, cependant, depuis que est emballé dans ASP.Net Identité qui ne peut pas être changé.
Je sais que je pourrais utiliser "nom d'utilisateur" en tant que e-mail, avec un validateur personnalisé et ensuite avoir un attribut supplémentaire pour ApplicationUser appelé DisplayName mais c'est plus un hack qu'une solution.
J'espère que ma question est claire. Merci à l'avance.
- À ce stade, il semble qu'aucune autre démarche à mettre en œuvre. Vous disposez d'un droit d'infos et doit continuer. Cadre ne fournit pas d'option configurable à faire des e-mail comme nom d'utilisateur comme dans les versions antérieures de l'Adhésion.
- Le programme de validation de la méthode est l'approche recommandée pour le faire par la Hoa Kung, un développeur sur l'ASP.NET l'équipe de travail sur l'Identité. stackoverflow.com/a/19460800/1138263
- double possible de stackoverflow.com/questions/19460078/...
- À l'aide de MVC5 et de l'Identité 2.0 vous obtenez l'adresse de Courriel au lieu du nom d'utilisateur par défaut. Si comme moi vous êtes venu ici de vouloir atteindre une pseudo à la place de l'email que j'ai fait une suggestion ici - stackoverflow.com/a/28602436/892018
Vous devez vous connecter pour publier un commentaire.
Si vous voulez vraiment utiliser l'e-mail pour vous connecter, puis, à mon humble avis, le "hack" vous l'avez suggéré, est la meilleure approche. Parce que, si vous insistez sur "faire les choses correctement", vous aurez au moins
D'autre part, si vous décidez de "pirater" le champ nom d'utilisateur, vous devez
assurez-vous que UserManager.UserValidator exemple utilisé dans votre AccountController permet de caractères spéciaux utilisés dans les adresses e-mail. Pour ce faire, assurez-vous que le constructeur par défaut ressemble à ceci:
J'espère que cela pourrait vous aider à peser les avantages et les inconvénients des deux approches et de trouver la meilleure solution. Bonne chance!
Peu en retard à la fête, mais j'ai pensé que je jetterais dans mon de 0,02$.
Même s'il est vrai que
UserName
etEmail
sont à la fois partie deIdentityUser
et sont donc nécessaire, notez qu'ils sont tous deux marqués commevirtual
. Si vous voulezUserName
etEmail
à l'adresse e-mail, laissez le ApplicationUser modèle encapsulent la logique de la sorte:Puis dans votre modèle de vue, exposer qu'une seule propriété et de l'associer à l'un ou dans votre
ApplicationUser
exemple, assurer que vous décorez le modèle de vue de la propriété avec[Required]
et[EmailAddress]
attributs.Comme d'autres l'ont mentionné, vous devez vous assurer que
AllowOnlyAlphanumericUserNames
est fixé àfalse
pour laUserManager
'sUserValidator
, mais je vous obtenir hors de la boîte avec le nouveau modèle web dans VS2013.public override string UserName { get { return Email; } }
avoir nom d'utilisateur dessiner à partir du champ e-mail. L'autre solution était de cartographie du champ dans la base de données d'applications config pour changer le nom de la colonne, la propriété a été lié.Je suis actuellement en train de travailler sur cette fonctionnalité pour l'Identité 1.1 modèles qui vont passer à la messagerie et à ajouter de la confirmation du compte/mot de passe oublié les fonctionnalités, et les deux options que nous avons en considération est le hack (utilisez le nom d'utilisateur e-mail de validation) et ajout d'un champ e-mail, qui est séparé du nom d'utilisateur, qui est ce que nous sommes penchée vers.
Il est probable qu'il y aura quelques e-mails des api spécifiques ajouté 1.1 à la UserManager:
Changer le UserValidator propriété pour votre UserManager objet:
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
Tout en travaillant sur un problème similaire, j'ai trouvé la solution la plus simple est tout simplement de l'étiquette le nom d'utilisateur d'entrée en tant que "e-Mail", puis régler manuellement l'Adhésion à l'e-mail lors de onCreating.
Je reçois ce travail.
D'abord aller à accountViewModels et ajouter une Propriété pour le nom d'utilisateur
Après modifier votre Registre de vue de l'ajout de la propriété username
Une fois cela fait, modifier votre Login vue
C'est tout ce dont vous avez besoin. De cette façon, vous pouvez vous connecter avec le nom d'utilisateur pas avec l'adresse e-mail.