【发布时间】:2016-04-19 20:02:06
【问题描述】:
我们在生产级别使用 asp.net 5 rc1 和 asp.net Identity。
一段时间后,由于某些原因,我们搬到了新服务器。现在我们的用户不能使用“忘记密码”选项了!在重置密码页面填写字段后,userManager.ResetPasswordAsync 抛出“Invalid Token”错误。
这是ResetPassword 方法:
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> ResetPassword(ResetPasswordViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var user = await _userManager.FindByEmailAsync(model.Email);
var result = await _userManager.ResetPasswordAsync(user, model.Code, model.Password);
if (result.Succeeded)
{
return RedirectToAction(nameof(AccountController.ResetPasswordConfirmation), "Account");
}
AddErrors(result);
return View();
}
在新服务器上注册的新用户使用忘记密码没有问题。
我认为这个问题应该与用户的ConcurrencyStamp 或SecurityStamp 属性有关。也许它们在新机器上无效。
有什么想法吗?
【问题讨论】:
-
你说你在一个新的服务器上。你还在运行旧的服务器和负载平衡吗?还是之前的机器上生成的令牌?
-
@blowdart 旧服务器已停止。我们只在新服务器上运行
-
你的 web.config 中有
machineKey吗? -
@trailmax 不,我们没有。
标签: asp.net-identity asp.net-core