사용자 계정의 암호를 재설정하는 데 문제가 있습니다. 나는 그것을하기 위해 Microsoft의 방법을 사용하고 있지만, 단지 작동하지 않습니다. 여기에 내가 잘 작동ASP.NET MVC 및 ID - 암호 재설정이 작동하지 않습니다.
var resetPasswordToken = new ResetPasswordToken
{
Id = Guid.NewGuid().ToString(),
Token = UserManager.GeneratePasswordResetToken(user.Id),
User = user,
ValidFrom = DateTime.Now,
ValidTo = DateTime.Now.AddMinutes(ApplicationConstants.SettingsResetPasswordTokensValidTimeInMinutes)
};
_resetPasswordTokensRepository.Insert(resetPasswordToken);
_resetPasswordTokensRepository.Save();
var email = new ResetPasswordEmailModel
{
ResetPasswordToken = resetPasswordToken,
User = user
};
IUserMailer mailer = new UserMailer();
mailer.ResetPassword(email).Send();
토큰 재설정 비밀번호를 생성하는 데 사용하는 코드가, 나는 데이터베이스에있는 토큰을하고 난 이메일을 통해 사용자에게 보낼 수 있습니다. 그런 다음 사용자가 링크를 클릭해야합니다. 다음은 새 암호를 생성하고 이전 암호를 데이터베이스의 새 암호로 바꾸는 방법입니다.
var resetPasswordToken = _resetPasswordTokensRepository.GetByEmailAndToken(email, code);
var newPassword = Membership.GeneratePassword(10, 2);
var result = await UserManager.ResetPasswordAsync(user.Id, resetPasswordToken.Token, newPassword);
if (result.Succeeded)
{
_resetPasswordTokensRepository.Remove(resetPasswordToken);
_usersRepository.Save();
var model = new NewPasswordEmailModel
{
User = user,
Password = newPassword
};
IUserMailer mailer = new UserMailer();
mailer.NewPassword(model).Send();
}
그리고 이것도 작동합니다. 데이터베이스에서 암호를 변경하고 전자 메일을 통해 사용자에게 보냅니다. 문제는 사용자가 새 암호 또는 이전 암호로 로그인 할 수 없다는 것입니다. 여기에 표시하지는 않았지만 토큰과 사용자가 모두 데이터베이스에 있는지 확인합니다.
내가 뭘 잘못하고 있니?
'IsConfirmed' 열이 false로 설정되어 있습니까? – markpsmith
AspNetUser 테이블에서 열 EmailConfirmed가 있지만 항상 false로 설정되었으며 문제가되지 않았습니다 (모든 것이 작동했습니다). 그것은 그것 때문에 작동하지 않을 수도 있습니다? [편집] 나는 그것을 변경하고 여전히 작동하지 않습니다. –
이전에 작동했다면 아마 문제가 아니었을 것입니다. 그것은 내가 그것을 언급 할 것이라고 생각하기 전에 저를 붙잡은 것입니다! – markpsmith