无法在其他操作中验证电子邮件令牌



我只是尝试使用控制器中的另一个操作来验证令牌。

在一个操作中,我生成令牌并重定向到另一个操作。

string token = await userManager.GenerateEmailConfirmationTokenAsync(user.Id);
string userId = HttpUtility.UrlEncode(user.Id);
string emailToken = HttpUtility.UrlEncode(token);
return RedirectToAction("TestToken", new { userId = userId, emailToken = emailToken });

TestToken操作中,我解码属性并尝试确认它,但result始终为 false,错误Invalid token.

string decodedUserId = HttpUtility.UrlDecode(userId);
string decodedToken = HttpUtility.UrlDecode(emailToken);
IdentityResult result = await userManager.ConfirmEmailAsync(decodedUserId, decodedToken);

如果我没有重定向到TestToken操作,而只是将代码放在第一个操作之后,则验证成功...可能出了什么问题?

如果您查看以下链接中提供的示例

创建具有登录、电子邮件确认和密码重置功能的安全 ASP.NET MVC 5 Web 应用 (C#)

使用 ASP.NET 标识进行帐户确认和密码恢复 (C#)

您将看到它们不编码

string token = await userManager.GenerateEmailConfirmationTokenAsync(user.Id);
return RedirectToAction("TestToken", new { userId = user.Id, emailToken = token });

或解码用户 ID 或令牌。

public async Task<ActionResult> TestToken(string userId, string emailToken ) {
    //... Code removed for brevity
    IdentityResult result = await userManager.ConfirmEmailAsync(userId, emailToken );        
    //... Code removed for brevity
    return View();
}

相关内容

  • 没有找到相关文章