我知道通过使用实体框架创建用户服务并创建密码哈希,我可以将一个或多个用户添加到网站! 但即使我想注册批量用户(例如使用excel或xml文件上传用户列表),我也想使用asp.net身份功能。 在我的场景中,我希望通过在xml,json或excel文件中上传用户列表来在网站上注册多个用户。 我希望在一次交易中注册所有这些内容。 有谁有想法?
答案 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之类的东西,则在创建用户时可能需要实现适当的方法。