ASP.NET MVC позволяет пользователям возможность назначать разрешения для функциональности (например, Действия) в Время разработки примерно так.
[Authorize(Roles = "Administrator,ContentEditor")]
public ActionResult Foo()
{
return View();
}
Для фактической проверки разрешения можно использоватьследующее утверждение в представлении (Razor):
@if (User.IsInRole("ContentEditor"))
{
<div>This will be visible only to users in the ContentEditor role.</div>
}
Проблема с этим подходом состоит в том, что все разрешения должны быть установлены и назначены как атрибуты при время разработки .(Атрибуты скомпилированы с DLL, поэтому в настоящее время я не знаю ни одного механизма для применения атрибутов (для предоставления дополнительных разрешений), таких как [Authorize (Roles = "Administrator, ContentEditor")] при время выполнения .
В нашем случае использования клиент должен иметь возможность изменить какие пользователи имеют какие разрешения после развертывания .
Например, клиент может пожелать разрешить пользователю вContentEditor
роль для редактирования некоторого содержимого определенного типа. Возможно, пользователю не разрешили редактировать значения таблицы поиска, но теперь клиент хочет разрешить это, не предоставляя пользователю все разрешения в следующем более высокомВместо этого клиент просто хочет изменить разрешения, доступные для текущей роли пользователя.
Какие варианты стратегий доступны дляРазрешить определять разрешения для контроллеров / представлений / действий MVC вне атрибутов (как в базе данных), оценивать и применять во время выполнения?
Если это возможно, мы бы очень хотели как можно ближе придерживаться функциональности ASP.NET для участников и поставщиков ролей, чтобы мы могли продолжать использовать другие преимущества, которые она предоставляет.
Спасибозаранее за любые идеи или идеи.