#

Asp Core: You need to confirm your email.
 
 
Fehlermeldung:
  • You need to confirm your email.

 
Logik-Problem:
Wenn man unter der Standard-Vorgabe des Asp.Net Core MVC Identiy Controllers sich in einer Webseite anmeldet und dann aber die Account-Anmeldung verpasst, dann kommt man in das Problem, dass man immer die Meldung
You need to confirm your email antrifft, diese Bestätigungsemail aber nicht erneut erzeugen kann.
 
Lösung:
1) Confirmation bei ResetPasswort
Deshalb muss entweder in der ResetPassword Logik beim Reset auch automatisch die EmailConfirmation aktualisiert werden.

//<additionalconfirmemail>

if(user.EmailConfirmed==false)

{

user.EmailConfirmed=true;

await_dbContext.SaveChangesAsync();

}

//</additionalconfirmemail>

 

returnRedirectToAction(nameof(ResetPasswordConfirmation));
 


 
2) oder erneuetes Senden der Confirmation beim Versuch des Login
Controllers/AccountController.cs->Login(..)

[HttpPost]

[AllowAnonymous]

[ValidateAntiForgeryToken]

publicasyncTask<IActionResult>Login(LoginViewModelmodel,stringreturnUrl=null)

{

//--------------<Login_Postback()>--------------

ViewData["ReturnUrl"]=returnUrl;

if(ModelState.IsValid)

{
..
..

 

//--<checkemail-confirmation>--

//*rp:ifloginfailssucceeded,thencheckconfirmationagain

if(await_userManager.IsEmailConfirmedAsync(user)==false)

{

//<confirm>

varcode=await_userManager.GenerateEmailConfirmationTokenAsync(user);

varcallbackUrl=Url.EmailConfirmationLink(user.Id,code,Request.Scheme);

await_emailSender.SendEmailConfirmationAsync(model.Email,callbackUrl);

//</confirm>

 

ModelState.AddModelError("","Youneedtoconfirmyouremail.Confirmation-Emailwassendagain");

returnView(model);

}

//--</checkemail-confirmation>--
 


 
 
 
Unter Login
https://angebotsuche.de/Account/Login

 
Geänderte ResetPassword Logik

[HttpPost]

[AllowAnonymous]

[ValidateAntiForgeryToken]

publicasyncTask<IActionResult>ResetPassword(ResetPasswordViewModelmodel)

{

//--------------<ResetPassword_Postback()>--------------

//<checkdatamodel>

if(!ModelState.IsValid)

{

returnView(model);

}

//</checkdatamodel>

 

//--<checkuser>--

varuser=await_userManager.FindByEmailAsync(model.Email);

if(user==null)

{

//Don'trevealthattheuserdoesnotexist

returnRedirectToAction(nameof(ResetPasswordConfirmation));

}

//--</checkuser>--

 

//--<ResetPassword>--

//stringsTest=user.PasswordHash;

varresult=await_userManager.ResetPasswordAsync(user,model.Code,model.Password);

if(result.Succeeded)

{

//<additionalconfirmemail>

if(user.EmailConfirmed==false)

{

user.EmailConfirmed=true;

await_dbContext.SaveChangesAsync();

}

//</additionalconfirmemail>

 

returnRedirectToAction(nameof(ResetPasswordConfirmation));

}

//--</ResetPassword>--

 

//<view>

AddErrors(result);

returnView();

//</view>

//--------------</ResetPassword_Postback()>--------------

}
 


 
Mobile

.

yesmovies