我需要在注册新教师时通过电子邮件向用户发送临时密码。 我使用Membership.GeneratePassword生成随机密码。 这是我的TeacherController
[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("recrutement@newera-tutoring.com"); // replace with valid value
message.Subject = "Your email subject";
message.Body = string.Format(body, "NewEra Tutoring", "recrutement@newera-tutoring.com", "Votre identifiant pour NewEra Tutoring");
message.IsBodyHtml = true;
using (var smtp = new SmtpClient())
{
var credential = new NetworkCredential
{
UserName = "recrutement@newera-tutoring.com", // 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 :(得分:0)
您在视图模型中使用了一个表达身体成员的密码属性,它基本上围绕对会员密码的调用创建了一个get包装器。
每次访问该属性时,它会再次运行该函数时生成一个新密码。
我不明白你为什么要在视图模型中拥有它,除非你打算提供一个随机密码,用户可以用自己的密码替换。如果这是目标,则使用标准属性get / set,并在视图模型构造函数中创建初始密码值。否则,将其从视图模型&amp;中取出。只有在其他所有内容都有效的情况下才在后期操作中创建密码。