我已重置密码令牌:
string resetPasswordToken = await _userManager.GeneratePasswordResetTokenAsync(user);
我要通过电子邮件链接重置密码后,我会传递此令牌和电子邮件以查看:
[HttpGet]
public IActionResult ResetPassword([FromQuery] string token, string email)
{
var model = new ResetPasswordViewModel
{
Email = email,
Token = token
};
return View(model);
}
问题是当我尝试将此令牌从视图传递到控制器时,令牌在符号+或“”之前被裁剪。 我的看法:
<form
method="post" action="reset">
<input name="Email" type="hidden" value=@Model.Email>
<input name="Token" type="hidden" value=@Model.Token/>
<div class="form-group">
<label name="NewPassword" class="control-label">New Password</label>
<input name="NewPassword" class="form-control" />
</div>
<div class="form-group">
<label name="ConfirmNewPassword" class="control-label">Confirm New Password</label>
<input name="ConfirmNewPassword" class="form-control" />
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-success" />
</div>
</form>
POST:
[HttpPost]
[Route("reset")]
public async Task<IActionResult> ResetPassword(ResetPasswordViewModel model)
{
if (!ModelState.IsValid)
return View(model);
var user = await _userManager.FindByEmailAsync(model.Email);
if (user == null)
return RedirectToAction("ResetPasswordConfirm");
var result = await _userManager.ResetPasswordAsync(
user, model.Token, model.NewPassword);
if (result.Succeeded)
return RedirectToAction("ResetPasswordConfirm");
foreach (var error in result.Errors)
ModelState.AddModelError(string.Empty, error.Description);
return View(model);
}
令牌:
CfDJ8IgVu4V4NxlJoKOV2esH3C3b0PdYklCHqKIB5Qsh0bvnrX4AXaDWgnpJbwCRupsVEKuOYxPctOSe7VqQe+VMzEQna/oNfdB9G3NWxq05wnuLfERKVFiMXMaodDsMV9G6b+J7fJCv8i1QmzR6X/vg/fDNkhmm37m1rJf0TZ41LEiBgthYS9RC/Cg785SaBN0O3VbO+nW/9WRZU1DzIU/ik2/CgkW1gqu9/FszQxVy0GtC
裁剪后的令牌:
CfDJ8IgVu4V4NxlJoKOV2esH3C3b0PdYklCHqKIB5Qsh0bvnrX4AXaDWgnpJbwCRupsVEKuOYxPctOSe7VqQe
答案 0 :(得分:2)
您在属性值周围缺少"
。
此:
<input name="Token" type="hidden" value=@Model.Token/>
应该是这样
<input name="Token" type="hidden" value="@Model.Token"/>
但是,您应该真正考虑使用标记帮助程序,而不是手动创建属性值,这样就不必担心HTML编码,例如:
<input type="hidden" asp-for="Token" />