2016-11-21 5 views
0

Мне нужно отправить временный пароль по электронной почте пользователю, когда я зарегистрирую нового Учителя. Я использую Memberhip.GeneratePassword для генерации случайного пароля. вот мой TeacherControllerMembership.GeneratePassword

[HttpPost] 
    public async Task<ActionResult> Create(TeacherViewModel viewModel) 
    { 
     if (!ModelState.IsValid) 
     { 
      var model = new TeacherViewModel() 
      { 
       Courses = _context.Courses.ToList(), 
       SituationActuelles = _context.SituationActuelles.ToList() 
      }; 

      return View("Create", model); 
     } 

     var teacher = new Teacher 
     {    
      PhoneNumber = viewModel.PhoneNumber, 
      Password = viewModel.Password 
     }; 
     _context.Teachers.Add(teacher); 
     _context.SaveChanges(); 

     var body = "<p>Merci de votre interet a NewEra Tutoring Corp.</p> <br/>" + 
        "Vos credentials pour acceder a votre platform est le suivant: <br/>" + 
        "Email: Votre email<br/>" + 
        "Votre mot de passe temporaire: " + viewModel.Password; 
     var message = new MailMessage(); 
     message.To.Add(new MailAddress(viewModel.Email)); // replace with valid value 
     message.From = new MailAddress("[email protected]"); // replace with valid value 
     message.Subject = "Your email subject"; 
     message.Body = string.Format(body, "NewEra Tutoring", "[email protected]", "Votre identifiant pour NewEra Tutoring"); 
     message.IsBodyHtml = true; 

     using (var smtp = new SmtpClient()) 
     { 
      var credential = new NetworkCredential 
      { 
       UserName = "[email protected]", // replace with valid value 
       Password = "neweratutoring" // replace with valid value 
      }; 
      smtp.Credentials = credential; 
      smtp.Host = "gator4123.hostgator.com"; 
      smtp.Port = 587; 
      smtp.EnableSsl = true; 
      await smtp.SendMailAsync(message); 
     } 
     return RedirectToAction("Index", "Home"); 
    } 

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

вот моя модель

TeacherViewModel{ 
    public string Password => Membership.GeneratePassword(12, 1); 

}

Где я делаю неправильно?

ответ

0

Вы использовали выражение body-член в модели представления для свойства пароля, которое по существу создает оболочку get вокруг запроса на членский пароль.

Каждый раз, когда вы получаете доступ к свойству, он генерирует новый пароль при повторном запуске функции.

Я не понимаю, почему вы хотите иметь его в модели просмотра вообще, если вы не намерены предлагать случайный пароль, который пользователь может заменить своим. Если это была цель, используйте стандартное свойство get/set и вместо этого создайте начальное значение пароля в конструкторе модели представления. В противном случае выньте его из модели представления &, создайте пароль только в действии post, если все остальное будет действительным.

 Смежные вопросы

  • Нет связанных вопросов^_^