記事詳細


投稿日
2026年09月29日22時17分
タイトル

ASP.NET Core MVC: MVC: 管理ページを作成するには、教えてください。

内容

ASP.NET Core MVC で「管理ページ(Admin Page)」を作成するには、
基本的には MVC の構造(Model, View, Controller) を使って、管理者専用のコントローラーとビューを用意し、アクセス制限をかけるのが王道です。

以下は ASP.NET Core MVC で管理ページを作る手順 の完全例です。

1. 管理用コントローラーを作成

Controllers/AdminController.cs

Csharp
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace MyApp.Controllers { // 管理者専用アクセス制限 [Authorize(Roles = "Admin")] public class AdminController : Controller { // 管理ページトップ public IActionResult Index() { return View(); } // ユーザー管理ページ public IActionResult Users() { // 実際は DB からユーザー一覧を取得 var users = new[] { new { Id = 1, Name = "Alice" }, new { Id = 2, Name = "Bob" } }; return View(users); } } }
  • [Authorize(Roles = "Admin")] で 管理者ロールのみアクセス可能にします。
  • Users() アクションはユーザー一覧を表示する例です。

2. ビューを作成

Views/Admin/Index.cshtml

Html
@{ ViewData["Title"] = "管理ページ"; } <h1>管理ページ</h1> <ul> <li><a href="@Url.Action("Users", "Admin")">ユーザー管理</a></li> <li><a href="#">その他の管理機能</a></li> </ul>

Views/Admin/Users.cshtml

Html
@model IEnumerable<dynamic> @{ ViewData["Title"] = "ユーザー管理"; } <h1>ユーザー管理</h1> <table class="table"> <thead> <tr> <th>ID</th> <th>名前</th> </tr> </thead> <tbody> @foreach (var user in Model) { <tr> <td>@user.Id</td> <td>@user.Name</td> </tr> } </tbody> </table>

3. 認証とロール設定

管理ページは 認証(Authentication) と ロール(Authorization) が必須です。

Program.cs(ASP.NET Core 6+)

Csharp
using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); // DB と Identity の設定 builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddDefaultIdentity<IdentityUser>() .AddRoles<IdentityRole>() // ロールを有効化 .AddEntityFrameworkStores<ApplicationDbContext>(); builder.Services.AddControllersWithViews(); var app = builder.Build(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();

4. 管理者ロールの作成と割り当て

初回起動時に管理者ロールを作成し、ユーザーに割り当てます。

Csharp
using Microsoft.AspNetCore.Identity; public static async Task SeedAdminRole(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")); } // 管理者ユーザー作成 var adminUser = await userManager.FindByEmailAsync("admin@example.com"); if (adminUser == null) { adminUser = new IdentityUser { UserName = "admin@example.com", Email = "admin@example.com" }; await userManager.CreateAsync(adminUser, "Admin@123"); // 強力なパスワード } // Admin ロールを割り当て if (!await userManager.IsInRoleAsync(adminUser, "Admin")) { await userManager.AddToRoleAsync(adminUser, "Admin"); } }

5. アクセス確認

  • 管理者ユーザーでログインすると /Admin にアクセス可能。
  • 一般ユーザーはアクセスすると 403 Forbidden になります。

✅ ポイント

  • 管理ページは必ず 認証 + ロール制御 を組み合わせる。
  • コントローラー単位で [Authorize(Roles = "Admin")] を付けると安全。
  • ビューは Views/Admin にまとめると管理しやすい。

もし希望があれば、
この管理ページに CRUD(登録・編集・削除)機能 を追加した完全サンプルも作れます。

あなたが求めているのは、
この「管理ページ」に データ管理機能(CRUD)付きの実装例 ですか?
それなら次のステップとしてコードを作ります。

Powered by Froala Editor

添付画像

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