У меня есть проект MVC5 с бэкэндом для настройки того, какая роль может получить доступ к какому меню. Обычный способ реализации авторизации на основе ролей выглядит примерно так.
[Authorize(Roles="Admin")]
public ActionResult UpdateProduct(ProductModel model)
{
//do something
return View(model);
}
Поскольку мне нужны динамичные роли, я думал о чем-то подобном.
[Authorize(Roles=GetRoles("UpdateProduct"))]
public ActionResult UpdateProduct(ProductModel model)
{
//do something
return View(model);
}
И, очевидно, это не работает, потому что атрибуты являются статическими метаданными.
Я осмотрелся и нашел эту динамическую авторизацию MVC 3 для нескольких ролей и пользователей, но есть ли более чистый способ добиться этого?
Примечание. Я стараюсь избегать вызова User.IsInRole
в каждом методе.