1

当我创建重置令牌并尝试更改用户密码时,我不断收到无效令牌。

我对为什么令牌立即无效感到困惑。当我运行这个方法时,找到了我创建的虚拟用户,创建了一个令牌,当我点击 ResetPassword 方法时,它的结果是“无效令牌”。

帐户控制器:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model)
{
    var userManager = UserManager;
    ApplicationUser user = userManager.FindByEmail(model.Email);

    if (user != null)
    {
        var code = await userManager.GeneratePasswordResetTokenAsync(user.Id);

        var callbackUrl = Url.Action("ResetPassword", "Account", new { UserId = user.UserID, code = code }, protocol: Request.Url.Scheme);

        //Test token immediately 
        var result = await userManager.ResetPasswordAsync(user.UserID, code, "randomPassword");

        MailMessage message = new MailMessage("no-reply@abc.com", user.Email);

        string baseUrl = Request.Url.Scheme + "://" + Request.Url.Authority;
        string resetLink = string.Format("<a href='{0}'>Click Here</a>", callbackUrl); 

        // Email service - send email 
    }

    return RedirectToAction("EmailSent");
}

我什至从头开始创建了一个新项目并尝试了同样的事情。一切正常。所以它必须是我改变的一些设置或不同的东西,但我没有看到它。

应用程序设置: 我将 Identity 更改为使用 Ints 作为用户 ID,而不是股票 guid 字符串。

是否还需要其他任何东西才能正常工作?是否有什么我遗漏的东西导致我的项目中的令牌无效?

4

0 回答 0