Asp.net core 在ASP.Net核心标识中代表创建用户-自动生成密码

Asp.net core 在ASP.Net核心标识中代表创建用户-自动生成密码,asp.net-core,asp.net-identity-3,Asp.net Core,Asp.net Identity 3,我需要在ASP.Net Core中创建用户,而不提供passowrd,因为在收到带有临时凭据的确认电子邮件后,它将由用户自己重置 几年前,我使用MVC4做了类似的事情,自动生成密码,然后在DB中添加用户,然后发送新的用户确认电子邮件: String password = Membership.GeneratePassword(10, 3); WebSecurity.CreateUserAndAccount(model.UserNa

我需要在ASP.Net Core中创建用户,而不提供passowrd,因为在收到带有临时凭据的确认电子邮件后,它将由用户自己重置

几年前,我使用MVC4做了类似的事情,自动生成密码,然后在DB中添加用户,然后发送新的用户确认电子邮件:

                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);
stringpassword=Membership.GeneratePassword(10,3);
WebSecurity.CreateUserAndAccount(model.UserName,password,new{Organization=model.SelectedOrganization,Email=model.Email});
Roles.AddUserToRole(model.UserName,model.SelectedRole);
IDictionary data=新字典();
数据。添加(“名称”,型号。用户名);
数据。添加(“密码”,密码);
String subject=String.Format(“\”{0}\”-您现在可以连接到Web标记数据系统,model.UserName);
String body=new TemplatingService().GetTemplatedDocument(“NewUserEmail.vm”,数据);
新建EmailServices().SendEmail(主题、正文、模型.Email);
MessageModel MessageModel=新的MessageModel();
messageModel.Body=“已向该用户发送了一封带有其凭据的电子邮件”;
返回视图(“消息”,消息模型);
您将如何使用ASP.Net核心标识执行类似操作

多谢各位


西尔文

像这样的东西,我写得很快,所以我可能错过了一些东西

这是不言自明的,如果你不明白什么,请告诉我

[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();
}
[HttpPost]
公共异步任务CreateCount(CreateUser模型)
{
var user=新用户
{
Email=model.Email,
用户名=model.Email
}
var identityResult=await_userManager.CreateAsync(用户);
if(identityResult.successed)
{
var token=wait_userManager.GenerateEmailConfirmationTokenAsync(用户);
var emailResult=wait_mailService.SendMailAsync(“单击此处确认您的帐户。”,令牌);
如果(电子邮件结果)
{
返回Ok();
}
返回状态码(500);
} 
返回请求();
}
[HttpPost]
公共异步任务ConfirmAccount(ConfirmUser模型)
{
var user=\u userManager.FindByIdAsync(model.UserId);
如果(user==null)返回BadRequest();
var emailResult=await\u userManager.confirmemailsync(用户、模型、令牌);
if(emailResult.successed)
{
var identityResult=await_userManager.AddPasswordAsync(user,model.Password);
如果(identityResult.successed)返回Ok();
}
返回请求();
}

OP询问如何像MVC4中的
成员身份一样生成密码。GeneratePassword
。您的代码在任何地方都无法生成任何引用唯一正确方法的内容。预先生成密码并强迫人们从电子邮件中复制粘贴密码只是一个糟糕的用户体验,需要重新设计。很难理解为什么有三个人投了反对票。看起来他们看不懂这个问题——只有最后一句@也许你就是其中之一。