use*_*800 5 asp.net asp.net-identity
我想在ASP.Identity Users and Memberships表中插入1000多个用户名和密码。理想情况下,我想在插入密码时对其进行加密。可以使用T-SQL完成此操作,还是必须使用C#中的某些代码来遍历将加密密码并插入用户名和其他信息的例程?一个例子,将不胜感激。
好的,所以我找到了一种在不影响性能的情况下批量插入AspNet身份表的方法。
public void CreateBulkIdentityUsers(List<string> userNames)
{
using (ApplicationDbContext context = new ApplicationDbContext())
{
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
var users = context.Users.Where(u => userNames.Contains(u.UserName)).ToList();
PasswordHasher passwordHasher = new PasswordHasher();
foreach (var userName in userNames)
{
var user = users.Where(u => u.UserName == userName).FirstOrDefault();
if (user == null)
{
user = new ApplicationUser()
{
UserName = userName,
EmailConfirmed = false,
PhoneNumberConfirmed = false,
TwoFactorEnabled = false,
LockoutEnabled = false,
PasswordHash = passwordHasher.HashPassword("Password@123"),
SecurityStamp = Guid.NewGuid().ToString().ToLower()
};
context.Users.Add(user);
}
}
context.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
在循环之前获取所有用户。这样我们就可以检查该用户是否已经存在于数据库中。
初始化PasswordHasher以哈希密码。
希望,这对某人有帮助。:)
Ant*_*Chu -1
我认为你需要在 C# 中执行此操作。尝试这个...
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
foreach (var user in users)
{
var appUser = new ApplicationUser
{
UserName = user.UserName // assign other properties here
};
await userManager.CreateAsync(appUser, user.Password);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |