1
기본 asp.net ID에 대해 ForgotPassword
메서드에 문제가 있습니다. 코드를 단계별로 실행할 때 사용자의 전자 메일 주소가 aspnetusers
테이블에 있음을 확인했지만 var user = await UserManager.FindByNameAsync(model.Email);
줄은 null
을 반환합니다. Visual Studio에서 FindByNameAsync
메서드로 들어갈 수없는 이유를 모르겠습니다. 여기서 무슨 일이 일어나고 있는지 확실하지 않은가요?ASP.NET 'FindByNameAsync'가 null을 반환합니까?
public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindByNameAsync(model.Email);
if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id)))
{
// Don't reveal that the user does not exist or is not confirmed
return View("ForgotPasswordConfirmation");
}
var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
var callbackUrl = Url.Action("ResetPassword", "Account",
new { UserId = user.Id, code = code }, protocol: Request.Url.Scheme);
await UserManager.SendEmailAsync(user.Id, "Reset Password",
"Please reset your password by clicking here: <a href=\"" + callbackUrl + "\">link</a>");
return View("ForgotPasswordConfirmation");
}
// If we got this far, something failed, redisplay form
return View(model);
}
사용해야 (https://msdn.microsoft.com/en-us/library/dn613101 (V = vs.108)가 .ASPX)이 방법은 소요 사용자 이름. 사용자 이름이 이메일 주소와 같은지 확실하지 않지만 대개는 그렇지 않습니다. 어쩌면 FindByNameAsync가 기대하거나 FIndbyEmailAsync를 사용하는 사용자 ID 인 모델과 다른 필드를 시도해보십시오. –
이 방법을 사용해야합니다. var user = await UserManager.FindByEmailAsync (model.Email); 귀하의 매개 변수가 이메일이기 때문입니다. –
나는 그것을 놓쳤다 고 생각할 수 없다. 나를 올바른 방향으로 가리켜 주셔서 감사합니다. – PixelPaul