У меня есть контроллер MVC и класс, который создает меню с элементами, которые должны отображаться только пользователям с определенной ролью c для действия контроллера. В приведенном ниже случае я не хочу отображать пункт меню Details для пользователей с Role2. В итоге я задаю те же роли в пунктах меню, те же роли, которые я уже указала на контроллерах. Таким образом, у меня есть 2 места, где я определяю роли, и они должны быть одинаковыми, так что это подвержено ошибкам.
То, что я хотел бы сделать, это как-то получить роли от контроллера, но я понятия не имею, как это сделать или, если это вообще возможно.
[Authorize(Roles = "Role1,Role2")]
public class MyController
{
public IActionResult Index()
{
return View();
}
[Authorize(Roles = "Role1")]
public IActionResult Details(int? id)
{
...
return View(...);
}
}
public class MenuItem
{
public string Action { get; set; }
public string Controller { get; set; }
public string Roles { get; set; }
}
...
var item = new MenuItem
{
Action = "Index",
Controller = "MyController",
Roles = "Role1,Role2", <---- this is what I do now.
Roles = GetRoles(MyController.Index.AuthorizedRoles) <---- this is what I need.
};