我的要求是管理员用户可以授权其他用户访问站点中的页面数。
用户和他们分配的页面存储在数据库中,格式如下。
Id UserId ClaimType 页面
1 1 测试 Test.cshtml
我正在尝试在 asp.net 核心项目中使用基于声明的授权来实现这一点。
但问题是它们超过 150 页,因此需要在“program.cs”文件中创建 150 个单独的策略。
还有其他更好的方法来实现这个目标吗?
只有指定的用户才能访问特定控制器中的相关操作方法。
我为每个页面实施了基于声明的授权。
程序.cs
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("TestPolicy", policy=> policy.RequireClaim("Test"));
options.AddPolicy("SamplePolicy", policy => policy.RequireClaim("Sample"));
/* For each pages defined separate policies in program.cs and more then 200 pages available in project */
});
控制器
[HttpGet]
[Authorize(Policy = "TestPolicy")]
public async Task<IActionResult> Test()
{
return View();
}