我有一些设置用户的代码:
const string name = "joe";
const string password = "abc";
const string roleName = "def";
在此之后,有很多C#代码要添加用户:
var role = RoleManager.FindByName(roleName);
if (role == null) {
role = new IdentityRole(roleName);
var roleresult = RoleManager.Create(role);
}
var user = UserManager.FindByName(name);
if (user == null) {
user = new ApplicationUser { UserName = name, Email = name };
var result = UserManager.Create(user, password);
result = UserManager.SetLockoutEnabled(user.Id, false);
}
// Add user admin to Role Admin if not already added
var rolesForUser = UserManager.GetRoles(user.Id);
if (!rolesForUser.Contains(role.Name)) {
var result = UserManager.AddToRole(user.Id, role.Name);
}
我需要添加四个或五个不同的用户 有没有办法可以将我的用户放在一个对象中并循环调用添加代码?
答案 0 :(得分:4)
肯定有办法!但为了做到这一点,需要几步才能到达那里。首先,创建一个小类来代表"用户"。这是一个带有构造函数和一些自动属性的文件:
public class MyUser
{
public MyUser(string name, string password, string roleName)
{
this.Name = name;
this.Password = password;
this.RoleName = roleName;
}
public string Name { get; set; }
public string Password { get; private set; }
public string RoleName { get; set; }
}
免责声明:不要打电话给这个班级MyUser
,想出一个更好的名字!这只是为了说明!
现在,要将您的用户&#34;放在一个对象&#34;中,您可以创建一个List<T>
对象并向其添加一些新的MyUser
实例:
var newUsers = new List<MyUser>
{
new MyUser("name1", "pwd1", "role1"),
new MyUser("name2", "pwd2", "role2"),
etc.
};
这会创建列表,并使用集合初始化程序语法立即将用户添加到其中。如果你需要在循环中完成它,你也可以做很长的事情:
var newUsers = new List<MyUser>();
newUsers.Add(new MyUser("name1", "pwd1", "role1"));
newUsers.Add(new MyUser("name2", "pwd2", "role2"));
// etc.
接下来,让你的&#34;创建用户&#34;函数中的代码会有所帮助,但需要MyUser
类作为参数:
public void CreateUser(MyUser myUser)
{
// A little protection
if (myUser == null)
throw new ArgumentNullException("user");
var role = RoleManager.FindByName(myUser.RoleName);
if (role == null) {
role = new IdentityRole(myUser.RoleName);
var roleresult = RoleManager.Create(role);
}
var user = UserManager.FindByName(myUser.Name);
if (user == null) {
user = new ApplicationUser { UserName = myUser.Name, Email = myUser.Name };
var result = UserManager.Create(user, myUser.Password);
result = UserManager.SetLockoutEnabled(user.Id, false);
}
// Add user admin to Role Admin if not already added
var rolesForUser = UserManager.GetRoles(user.Id);
if (!rolesForUser.Contains(role.Name)) {
var result = UserManager.AddToRole(user.Id, role.Name);
}
}
现在,要最终创建用户,您只需循环浏览MyUser
列表并将其传递给CreateUser()
函数:
foreach (var user in newUsers)
{
CreateUser(user);
}
当然,您希望在必要时合并try/catch
块,添加适当的验证等。这只是为了说明我将如何处理此问题。