Как реализовать роли в ASP.NET Identity в веб-форме - PullRequest
0 голосов
/ 04 мая 2018

Я успешно создал нового пользователя с этим кодом:

        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 голосов
/ 05 мая 2018

Я получил решение.

Это решение сработало для меня.

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

Вам не нужно предоставлять DBContext конструктору RoleStore.

...