ASP.NET Core MVC で「管理ページ(Admin Page)」を作成するには、
基本的には MVC の構造(Model, View, Controller) を使って、管理者専用のコントローラーとビューを用意し、アクセス制限をかけるのが王道です。
以下は ASP.NET Core MVC で管理ページを作る手順 の完全例です。
1. 管理用コントローラーを作成
Controllers/AdminController.cs
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
@{
ViewData["Title"] = "管理ページ";
}
<h1>管理ページ</h1>
<ul>
<li><a href="@Url.Action("Users", "Admin")">ユーザー管理</a></li>
<li><a href="#">その他の管理機能</a></li>
</ul>
Views/Admin/Users.cshtml
@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+)
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. 管理者ロールの作成と割り当て
初回起動時に管理者ロールを作成し、ユーザーに割り当てます。
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