Как исправить «неверный токен» в подтверждении подлинности электронной почты ASP.NET - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь получить подтверждение по электронной почте для подтверждения новой учетной записи пользователя.Токен создается и отправляется по электронной почте пользователю, который получает электронное письмо со ссылкой для подтверждения учетной записи.Когда пользователь нажимает на ссылку, я получаю INVALID TOKEN.

Он размещен на 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

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

Это невероятно, но решением было создание нового проекта и привлечение к нему всего.

Я думаю, что-то случилось, когда VS создал проект, который вызвал проблему.

Спасибо всем за помощь

0 голосов
/ 03 июля 2019

Кодируйте свой код перед отправкой по электронной почте:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...