我使用以下代码成功创建了一个新用户:
protected void btnRegister_Click(object sender, EventArgs e)
{
// Default UserStore constructor uses the default connection string named: DefaultConnection
var userStore = new UserStore<IdentityUser>();
var manager = new UserManager<IdentityUser>(userStore);
var user = new IdentityUser() { UserName = txtbxUserName.Text };
IdentityResult result = manager.Create(user, txtbxPassword.Text);
if (result.Succeeded)
{
var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
var userIdentity =
manager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
authenticationManager.SignIn(new AuthenticationProperties() { }, userIdentity);
Response.Redirect("~/MoneyFly");
}
else
{
litStatusMessage.Text = result.Errors.FirstOrDefault();
}
}
创建用户后,代码就创建了一个本地数据库。
我想创建角色并将其添加到用户。
我看到了一个如下所示的帖子。
https://forums.asp.net/t/2093837.aspx?How+to+implement+Roles+in+ASP+NET+Identity+2+1+in+Webforms
我努力复制代码中的内容。
这是部分原因,因为它包含一个自动生成的类,我没有。
ApplicationDbContext context = new ApplicationDbContext();
如何生成该dbContext。它似乎对框架的使用至关重要。 例如,这行代码使用它来创建RoleStore的实例。
var roleStore = new RoleStore<IdentityRole>(context);
答案 0 :(得分:0)
我得到了解决方案。
这个解决方案对我有用。
var roleStore = new RoleStore<IdentityRole>();
var roleMgr = new RoleManager<IdentityRole>(roleStore);
IdentityResult IdRoleResult = roleMgr.Create(new IdentityRole { Name = "Administrator" });
var userStore = new UserStore<IdentityUser>();
var manager = new UserManager<IdentityUser>(userStore);
IdentityResult IdUserResult = manager.AddToRole( manager.FindByName("vi").Id, "Administrator");
您不必为RoleStore构造函数提供DBContext。