Сброс забытого пароля по OTP через электронную почту в ASP.NET Web API и Angular 6 с сохранением состояния сеанса или cookie? - PullRequest
0 голосов
/ 26 февраля 2019

Я отправляю и сохраняю OTP в HttpCookie следующим методом (конечная точка API)

var user = manager.FindByEmail(Email);
Random random = new Random();
long OTP = random.Next(100000, 999999);
HttpCookie httpCookie = new HttpCookie(user.FirstName);
httpCookie.Values.Add("OTP", OTP.ToString());
httpCookie.Expires = DateTime.Now.AddMinutes(10);
HttpContext.Current.Response.Cookies.Add(httpCookie);
string message = "Your OTP for Password Reset : " + HttpContext.Current.Request.Cookies[user.FirstName]["OTP"];
try
{
    MailMessage mailMessage = new MailMessage();
    mailMessage.From = new MailAddress("your email");
    mailMessage.To.Add(Email);
    mailMessage.Subject = "Reset Account Password...";
    mailMessage.Body = message;
    mailMessage.IsBodyHtml = true;
    SmtpClient smtpClient = new SmtpClient();
    smtpClient.Host = "smtp.gmail.com";
    NetworkCredential credentials = new NetworkCredential("your email", "your password");
    smtpClient.Credentials = credentials;
    smtpClient.Port = 587;
    smtpClient.EnableSsl = true;
    smtpClient.Send(mailMessage);
}
catch(Exception ex)
{
    throw ex;
}  

Я проверяю OTP в отдельной конечной точке (функция).Пытаясь получить данные Cookie.Но когда я пытаюсь получить данные из файла cookie, он возвращает null.Следовательно, OTP не соответствует.

var user = manager.FindByEmail(Email);
if (Convert.ToInt64(HttpContext.Current.Request.Cookies[user.FirstName]["OTP"]) == EnteredOTP)
{
    return "CorrectOTP";
}
else
{
    return "IncorrectOTP";
}

Но HttpContext.Current.Request.Cookies[user.FirstName]["OTP"] не содержит соответствующего значения.У меня вопрос, как я могу поддерживать значение OTP между различными API / конечной точкой / функциями

...