2017-05-18 18 views
0

임시 자격 증명으로 확인 이메일을받은 후 사용자가 재설정하므로 비밀번호를 제공하지 않고 ASP.Net Core에서 사용자를 생성해야합니다.ASP.Net Core Identity 대신 자동으로 사용자 생성 - 비밀번호 자동 생성

몇 년 전, 나는 새로운 사용자 확인 이메일 DB를에서 사용자를 추가 한 후 전송하여 자동으로 암호 등을 생성하여 MVC4를 사용하여 비슷한 일을했다 :

   String password = Membership.GeneratePassword(10, 3); 

       WebSecurity.CreateUserAndAccount(model.UserName, password, new { Organization = model.SelectedOrganization, Email = model.Email }); 
       Roles.AddUserToRole(model.UserName, model.SelectedRole); 
       IDictionary<string, string> data = new Dictionary<string, string>(); 
       data.Add("name", model.UserName); 

       data.Add("password", password);     
       String subject = String.Format("\"{0}\" - You can now connect to Web Tagging Data System ", model.UserName); 
       String body = new TemplatingService().GetTemplatedDocument("NewUserEmail.vm", data); 
       new EmailServices().SendEmail(subject, body, model.Email); 
       MessageModel messageModel = new MessageModel(); 
       messageModel.Body = "An email has been sent to this user with its credentials"; 
       return View("Message", messageModel); 

을 어떻게 비슷한 일을 할 것입니다 ASP.Net 핵심 정체성?

실뱅이 같은

답변

2

뭔가, 나는 내가 놓친 뭔가 진짜 빨리 그것을 썼다 감사드립니다.

꽤 이해할 만해, 당신이 뭔가를 모르는 경우 알려주십시오.

[HttpPost] 
public async Task<IActionResult> CreateAccount(CreateUser model) 
{ 
    var user = new User 
    { 
     Email = model.Email, 
     Username = model.Email 
    } 

    var identityResult = await _userManager.CreateAsync(user); 

    if (identityResult.Succeeded) 
    { 
     var token = await _userManager.GenerateEmailConfirmationTokenAsync(user); 
     var emailResult = await _mailService.SendMailAsync("Click here to confirm your account.", token); 

     if (emailResult) 
     { 
      return Ok(); 
     } 

     return StatusCode(500); 
    } 

    return BadRequest(); 
} 

[HttpPost] 
public async Task<IActionResult> ConfirmAccount(ConfirmUser model) 
{ 
    var user = _userManager.FindByIdAsync(model.UserId); 
    if (user == null) return BadRequest(); 

    var emailResult = await _userManager.ConfirmEmailAsync(user, model.token); 

    if (emailResult.Succeeded) 
    { 
     var identityResult = await _userManager.AddPasswordAsync(user, model.Password); 

     if (identityResult.Succeeded) return Ok(); 
    } 

    return BadRequest(); 
}