1. ホーム
  2. c#

[解決済み] ASP.NET Coreでロールを作成し、ユーザーに割り当てるには?

2023-04-06 07:59:16

質問

ASP.NET Coreのデフォルトのウェブサイトテンプレートを使用しており、認証は"個々のユーザーアカウント"として選択されています。コントローラでロールを使用してアクセスをフィルタリングできるように、ロールを作成してユーザーに割り当てるにはどうしたらよいでしょうか。

どのように解決するのですか?

私は、アクションを Accounts コントローラでアクションを作成し、関数を呼び出してロールを作成し、ロールに Admin ロールをデフォルトユーザに割り当てます。(おそらく、実運用環境ではデフォルトユーザーを削除すべきです)。

    private async Task CreateRolesandUsers()
    {  
        bool x = await _roleManager.RoleExistsAsync("Admin");
        if (!x)
        {
            // first we create Admin rool    
            var role = new IdentityRole();
            role.Name = "Admin";
            await _roleManager.CreateAsync(role);

            //Here we create a Admin super user who will maintain the website                   

            var user = new ApplicationUser();
            user.UserName = "default";
            user.Email = "[email protected]";

            string userPWD = "somepassword";

            IdentityResult chkUser = await _userManager.CreateAsync(user, userPWD);

            //Add default User to Role Admin    
            if (chkUser.Succeeded)
            {
                var result1 = await _userManager.AddToRoleAsync(user, "Admin");
            }
        }

        // creating Creating Manager role     
        x = await _roleManager.RoleExistsAsync("Manager");
        if (!x)
        {
            var role = new IdentityRole();
            role.Name = "Manager";
            await _roleManager.CreateAsync(role);
        }

        // creating Creating Employee role     
        x = await _roleManager.RoleExistsAsync("Employee");
        if (!x)
        {
            var role = new IdentityRole();
            role.Name = "Employee";
            await _roleManager.CreateAsync(role);
        }
  }

その後、ユーザーのロールを管理するためのコントローラを作成することができます。