記事詳細


投稿日
2026年09月14日09時13分
タイトル

asp .NET Core mvc :個別認証アプリ で管理者専用ページの作成方法を教えてください

内容

ASP.NET Core MVC の個別認証(Individual Accounts) を使ったアプリで、
管理者専用ページ を作るには、以下の流れで実装します。

1. ロール(Role)機能を有効化する

Program.cs(または )で Role 管理を有効にします。Startup.cs

シャープ
using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using YourApp.Data; // ApplicationDbContext の名前空間 var builder = WebApplication.CreateBuilder(args); // DB 接続設定 builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); // Identity + Role サポート builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddRoles<IdentityRole>() // ★ これを追加 .AddEntityFrameworkStores<ApplicationDbContext>(); builder.Services.AddControllersWithViews(); var app = builder.Build(); // ルーティングなど if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); // 認証 app.UseAuthorization(); // 認可 app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.MapRazorPages(); app.Run();

2. 管理者ロールを作成する(初回のみ)

アプリ起動時に Admin ロールを自動作成し、特定ユーザーに割り当てます。

Data/SeedData.csを作成:

シャープ
using Microsoft.AspNetCore.Identity; namespace YourApp.Data { public static class SeedData { public static async Task InitializeAsync(IServiceProvider serviceProvider) { var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>(); var userManager = serviceProvider.GetRequiredService<UserManager<IdentityUser>>(); // Admin ロールがなければ作成 if (!await roleManager.RoleExistsAsync("Admin")) { await roleManager.CreateAsync(new IdentityRole("Admin")); } // 管理者ユーザーを作成(存在しない場合) string adminEmail = "admin@example.com"; string adminPassword = "Admin@123"; var adminUser = await userManager.FindByEmailAsync(adminEmail); if (adminUser == null) { adminUser = new IdentityUser { UserName = adminEmail, Email = adminEmail, EmailConfirmed = true }; var result = await userManager.CreateAsync(adminUser, adminPassword); if (result.Succeeded) { await userManager.AddToRoleAsync(adminUser, "Admin"); } } } } }

Program.csの最後に追加:

シャープ
using YourApp.Data; using (var scope = app.Services.CreateScope()) { var services = scope.ServiceProvider; await SeedData.InitializeAsync(services); }

3. 管理者専用コントローラーを作成

Controllers/AdminController.cs

シャープ
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace YourApp.Controllers { [Authorize(Roles = "Admin")] // ★ Admin ロールのみアクセス可能 public class AdminController : Controller { public IActionResult Index() { return View(); } } }

4. 管理者専用ビューを作成

Views/Admin/Index.cshtml

HTML
@{ ViewData["Title"] = "管理者ページ"; } <h1>管理者専用ページ</h1> <p>このページは Admin ロールのユーザーのみがアクセスできます。</p>

5. 動作確認

  1. アプリを起動
  2. admin@example.comAdmin@123でログイン
  3. /Adminにアクセス → 表示される
  4. 一般ユーザーでアクセス → 403 Forbidden になる

✅ ポイント

  • AddRoles<IdentityRole>()を忘れるとロール機能が使えません。
  • 初回起動時に でロールと管理者ユーザーを作成しておくと便利です。SeedData
  • [Authorize(Roles = "Admin")]を付けるだけでアクセス制御できます。

もし希望があれば、この 管理者専用ページ
「ログイン後のナビゲーションメニューにだけ表示する」コードも追加できますが、
それも実装しますか?
そうすれば一般ユーザーにはリンク自体が見えなくなります。

Powered by Froala Editor

添付画像

画像はありません
Genreのカテゴリ-名
MVCTutorials
編集 | 記事一覧