簡體   English   中英

如何在ASP.NET身份電子郵件確認中修復“無效令牌”

[英]How to fix 'Invalid Token' on ASP.NET Identity Email Confirmation

我正在嘗試讓確認電子郵件驗證新的用戶帳戶。 創建令牌並將其通過電子郵件發送給用戶,該用戶會收到一封電子郵件,其中包含用於驗證帳戶的鏈接。 當用戶單擊鏈接時,我得到了無效令牌。

它托管在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");
}

我也將machineKey添加到web.config。

<machineKey validationKey="key" decryptionKey="key" validation="SHA1" decryption="AES" />

我一直都在收到錯誤的INVALID TOKEN

通過電子郵件發送代碼之前,請先對其進行編碼:

private async Task<string> SendEmailConfirmationTokenAsync(string userID, string subject)
{
   string _code = await UserManager.GenerateEmailConfirmationTokenAsync(userID); 
     _code = HttpUtility.UrlEncode(_code);
   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;
}

這真是令人難以置信,但是解決方案是創建一個新項目並將其帶到其中。

我認為VS創建導致問題的項目時發生了一些事情。

謝謝大家的歡呼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM