Получение неверного запроса в коде Рика Андерсона для восстановления пароля)
Я пытаюсь создать функцию восстановления пароля в сообщении Рика Андерсона здесь ( http://www.asp.net/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity). Это в основном позволяет пользователю, который потерял пропуск, получить электронное письмо со ссылкой, содержащей токен. Когда они проверяются по прибытии обратно на сайт, они получают страницу отдыха. В примере Рика все работало нормально, за исключением того, что когда я добрался до строки кода, где генерируется callbackURL, я получил ошибку Bad Request. Насколько я могу судить, это вызвано всеми этими дополнительными символами в токене, и браузеры не примут? Может ли кто-нибудь указать мне на решение? Спасибо, Санджив
// POST: /Account/ForgotPassword
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
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>");
ViewBag.Link = callbackUrl;
return View("ForgotPasswordConfirmation");
}
// If we got this far, something failed, redisplay form
return View(model);
}
1 ответ
Использование HttpUtility.UrlEncode
на callbackUrl
прежде чем добавить его в строку.