当我注册新教师时,我需要通过电子邮件向用户发送临时密码。我使用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);}
我哪里做错了?
发布于 2017-11-02 19:54:52
您已经在视图模型中为password属性使用了一个表达式主体成员,该属性实质上创建了一个get包装器,用于调用成员身份密码。
每次访问该属性时,它都会在再次运行函数时生成一个新密码。
我不明白你为什么要把它放在视图模型中,除非你的意图是提供一个用户可以用他们自己的密码替换的随机密码。如果这是目的,那么使用一个标准的get/set属性,并在视图模型构造函数中创建一个初始密码值。否则,将其从视图模型中取出&只有在其他所有内容都有效的情况下,才在post操作中创建密码。
https://stackoverflow.com/questions/40711061
复制相似问题