要根据用户所属的“组”限制显示给用户的数据,可以使用ASP.NET Core MVC Identity的角色和策略授权功能。以下是一个示例解决方案:
RoleManager
来创建和管理角色。var roleManager = serviceProvider.GetRequiredService>();
await roleManager.CreateAsync(new IdentityRole("Admin"));
await roleManager.CreateAsync(new IdentityRole("User"));
UserManager
来管理用户。var userManager = serviceProvider.GetRequiredService>();
var user = await userManager.FindByNameAsync("username");
await userManager.AddToRoleAsync(user, "Admin");
Startup.cs
文件中,您需要配置策略以限制用户对数据的访问。您可以使用services.AddAuthorization()
方法配置策略,并使用services.AddMvc()
方法将策略应用到MVC中。services.AddAuthorization(options =>
{
options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin"));
});
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizePage("/AdminPage", "AdminOnly");
});
[Authorize]
属性来应用策略。[Authorize(Policy = "AdminOnly")]
public IActionResult AdminPage()
{
// Only users with "Admin" role can access this page
return View();
}
这样,只有具有“Admin”角色的用户才能访问AdminPage
视图。其他用户将被重定向到登录页面或者被拒绝访问。