0

mise RequireConfirmedEmail à des options d'identité retourne SignInResult.NotAllowed sur le résultat de la signature de l'utilisateur, il est testé à CanSignInAsyncRequireConfirmedEmail pour les connexions normales, mais pas les connexions externes (noyau d'identité)

if (Options.SignIn.RequireConfirmedEmail && !(await UserManager.IsEmailConfirmedAsync(user))) 

mais appliquent aux connexions externes aussi, qui est un comportement que nous aimerions avoir seulement sur les connexions normales

nous savons déjà que nous pouvons étendre le SignInManager<TUser> mais nous avons pensé que peut-être quelqu'un a une solution plus simple et élégante, quelqu'un?

Répondre

1

La solution la plus simple est de mettre EmailConfirmed = true lorsque vous créez le utilisateur externe, comme dans la méthode de modèle par défaut ExternalLoginConfirmation:

var user = new ApplicationUser { UserName = model.Email, 
           Email = model.Email, 
           EmailConfirmed = true }; 
+0

je l'ai accepté pour l'absence d'une meilleure réponse, mais il est tout simplement pas droit (au moins pour notre application de marquer un utilisateur non confirmé comme confirmé) mais nous allons le faire fonctionner, merci tho – mynameisjeff

+1

La connexion externe ne devrait-elle pas être considérée comme confirmée (par le fournisseur externe)? –

+0

oui, mais en théorie, comme les gens n'ont plus accès à cet email, et il suffit d'un mouvement stupide pour s'enfermer (comme 2FA, ou retirer le login externe du compte) mais oui en théorie (même si je me souviens que vous pouvez créer un compte facebook et vous connecter avant la confirmation, mais je ne sais pas si c'est encore possible et si cela permettra une connexion externe) – mynameisjeff