是否可以使用Asp.Net Identity核心注册多个用户?

时间:2018-01-20 21:12:36

标签: c# asp.net-core-mvc asp.net-identity-2

我知道通过使用实体框架创建用户服务并创建密码哈希,我可以将一个或多个用户添加到网站! 但即使我想注册批量用户(例如使用excel或xml文件上传用户列表),我也想使用asp.net身份功能。 在我的场景中,我希望通过在xml,json或excel文件中上传用户列表来在网站上注册多个用户。 我希望在一次交易中注册所有这些内容。 有谁有想法?

1 个答案:

答案 0 :(得分:4)

取决于您想要使用的抽象级别,但只需循环遍历默认Register方法的内容,您就可以执行以下操作:

public class RegisterLotsModel
{
    public List<UserToRegister> ApplicationUsers { get; set; }
}

public class UserToRegister
{
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
}

您必须以JSON格式将数据发布到终点。

DTO课程是:

UserManager

还有许多其他方法可以实现您想要实现的目标,但这很快,很脏并且很可能正常工作。如果需要确认电子邮件,您可能需要在方法的成功部分发送确认电子邮件。

编辑 - 单一交易

要在一个事务中插入所有新用户,您必须先生成密码哈希值,然后将它们插入数据库。

要获取给定密码的哈希值,您可以使用foreach (var toRegister in model.ApplicationUsers) { var hasher = _userManager.PasswordHasher; var user = new ApplicationUser {UserName = toRegister.UserName, Email = toRegister.Email}; toRegister.Hashed = hasher.HashPassword(user, toRegister.Password); } 提供的密码哈希:

{{1}}

然后您可以手动将这些插入数据库。这对于基本密码验证来说已足够,但如果您的实现使用SecurityStamp之类的东西,则在创建用户时可能需要实现适当的方法。