我正在尝试让确认电子邮件验证新用户帐户。创建令牌并通过电子邮件发送给用户,该用户收到一封电子邮件,其中包含验证帐户的链接。当用户点击链接时,我得到了无效的令牌。
它托管在 Godaddy 上(不确定是否有任何区别)
在调试代码时,我发现发送到验证的令牌最初生成的是相同的,不同的是现在它的小写,这可能是问题吗?
生成令牌并通过电子邮件发送的代码
private async Task<string> SendEmailConfirmationTokenAsync(string userID, string subject)
{
string _code = await UserManager.GenerateEmailConfirmationTokenAsync(userID);
var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = userID, code = _code }, protocol: Request.Url.Scheme);
await UserManager.SendEmailAsync(userID, subject, "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
return callbackUrl;
}
要确认令牌/电子邮件:
[AllowAnonymous]
public async Task<ActionResult> ConfirmEmail(string userId, string code)
{
if (userId == null || code == null)
{
return View("Error");
}
var result = await UserManager.ConfirmEmailAsync(userId, code);
if (result.Succeeded)
{
return RedirectToAction("Create", "Users", new { id = userId });
}
AddErrors(result);
ViewBag.errorMessage = "Error: " + result.Errors;
return View("Error");
}
我还向 web.config 添加了 machineKey。
<machineKey validationKey="key" decryptionKey="key" validation="SHA1" decryption="AES" />
我一直收到错误 INVALID TOKEN