Почему мое свойство EmailConfirmed продолжает сбрасываться до false после обновления и установки его в значение true - PullRequest
0 голосов
/ 30 октября 2019

У меня есть класс StApplications с логическим свойством ConfirmEmai, мое приложение отправляет ссылку на Confrim mail новым пользователям, и после подтверждения я устанавливаю для свойства подтвержденного сообщения электронной почты значение true, обновляя и сохраняя изменения.

но через некоторое время я понял, что при входе в систему я получаю эту подсказку для пользователя, который подтвердил свою электронную почту, что электронная почта не подтверждена.

эта электронная почта не подтверждена, приглашение устанавливается только тогда, когда поле для подтверждения электронной почты для этого пользователяустановлено значение false.

Пожалуйста, что я делаю неправильно

Я пробовал так много способов обновить это свойство конкретного пользователя ConfrimEmail, сначала оно будет, а через некоторое время вернется к значению false.

public IActionResult ConfirmEmail (int appId, строковый токен)

    {




        if (appId == 0 || token == null)
        {
            return RedirectToAction("ApplicationIndex", "Home");
        }



        else
        {

            var applicant =  _context.StApplications.SingleOrDefault(c => c.ApplicationId == appId);
            if (applicant.tokenProvided == token)
            {
                applicant.ConfirmEmail = true;
                //applicant = new StApplications { IsEmailConfirmed = true };
                var updatedApplicant = _ApplicationRepository.Update(applicant);
                //_context.StApplications.Update(applicant);

                if (updatedApplicant == true)
                {
                    return View();
                }
            }

            else
            {
                ViewBag.Invalidtoken = "Invalid";
                return View();
            }



        }
        return BadRequest();
    }

закомментированный раздел - это то, что я пробовал, но все тот же результат, обновить до Tru, а затем через некоторое время вернуться к ложному

Я ожидаю, что действие ConfirmEmail должно установить свойство true для emailconfirm иоставайся без изменений

1 Ответ

0 голосов
/ 31 октября 2019

Для текущего кода вы не сохранили изменения, вызвав await _context.SaveChangesAsync(); после _context.StApplications.Update(applicant);.

Кроме того, вы можете попробовать

    public async Task<IActionResult> OnGetAsync(string userId, string code)
    {
        if (userId == null || code == null)
        {
            return RedirectToPage("/Index");
        }

        var user = await _userManager.FindByIdAsync(userId);
        if (user == null)
        {
            return NotFound($"Unable to load user with ID '{userId}'.");
        }

        code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
        var result = await _userManager.ConfirmEmailAsync(user, code);
        StatusMessage = result.Succeeded ? "Thank you for confirming your email." : "Error confirming your email.";
        return Page();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...