[英]Issue with Asp.net identity Email Confirmation Token: “Invalid Token”
[英]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.