【发布时间】:2020-04-24 19:05:46
【问题描述】:
目前有 3 个角色 - Admin、Manager 和 Writer。
HomeController 内部有一些方法,其中大多数对Admin 和Manager 都是通用的,少数仅用于Admin,很少用于Writer。大约有30种方法。 Admin 和 Manager 使用 25 个,仅 Adminin 使用 1-2 个。 1-2 代表所有 3 个角色。
- 每个人都应该只能使用 1 个名为
ForWriterOnly()的方法 - 编写者不应有权访问任何其他方法,但管理员和经理应有权访问
- 有些方法只适用于 Admin,不适用于 Manager 和 Writer
实现上述 3 种情况的最佳方法是什么?对于除 ForWriterOnly() 之外的大多数其他方法,我如何排除 Writer ?以及如何排除Admin 以访问其他一些方法?
我知道我可以为 Admin 和 Manager 的 25 种常用方法写 [Authorize(Roles = "Admin, Manager")],但我正在寻找更简单的解决方案。
请修改我的代码,以便于理解。
[Authorize(Roles = "Admin, Manager, Writer")]
public class HomeController : Controller
{
public async Task<IActionResult> ForEveryone()
{
return View();
}
public async Task<IActionResult> ForAdminAndManager()
{
return View();
}
public async Task<IActionResult> ForWriterOnly()
{
return View();
}
public async Task<IActionResult> ForAdminOnly()
{
return View();
}
public async Task<IActionResult> ForAdminAndManager1()
{
return View();
}
public async Task<IActionResult> ForAdminAndManager2()
{
return View();
}
...........
// There are around 30 other methods which are common for both Admin and Manager
}
【问题讨论】:
标签: c# asp.net asp.net-core