首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Membership.GeneratePassword

Membership.GeneratePassword
EN

Stack Overflow用户
提问于 2016-11-21 08:21:10
回答 1查看 55关注 0票数 0

当我注册新教师时,我需要通过电子邮件向用户发送临时密码。我使用Membership.GeneratePassword生成随机密码。这是我的TeacherController

代码语言:javascript
复制
[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");
    }

但我在电子邮件中收到的密码与保存在数据库中的密码不同。

这是我的模型

代码语言:javascript
复制
TeacherViewModel{
    public string Password => Membership.GeneratePassword(12, 1);

}

我哪里做错了?

EN

回答 1

Stack Overflow用户

发布于 2017-11-02 19:54:52

您已经在视图模型中为password属性使用了一个表达式主体成员,该属性实质上创建了一个get包装器,用于调用成员身份密码。

每次访问该属性时,它都会在再次运行函数时生成一个新密码。

我不明白你为什么要把它放在视图模型中,除非你的意图是提供一个用户可以用他们自己的密码替换的随机密码。如果这是目的,那么使用一个标准的get/set属性,并在视图模型构造函数中创建一个初始密码值。否则,将其从视图模型中取出&只有在其他所有内容都有效的情况下,才在post操作中创建密码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40711061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档