如何在webform中实现ASP.NET身份中的角色

时间:2018-05-04 16:54:26

标签: c# asp.net-identity

我使用以下代码成功创建了一个新用户:

        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);

1 个答案:

答案 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。