Я знаю, что это вопрос, который задавался снова и снова, но я пытаюсь реализовать авторизацию на основе разрешений, а не на основе роли в приложении ASP.NET MVC. Поэтому вместо того, чтобы иметь только такие роли высокого уровня, как "Менеджер", "Администратор" или "Пользователь", мне нужны разрешения, такие как ViewTask, AddTask, DeleteTask. Я прочитал массу комментариев по этому поводу, и кажется, что самое простое решение - просто рассматривать роли как разрешения и определять "роли" ViewTask, AddTask и DeleteTask.
Является ли такой подход действительно хорошей идеей? Некоторые из моих проблем заключаются в том, что вы можете получить более 100 ролей в зависимости от размера приложения, которое затем исключило бы возможность выполнять кеширование роли в файлах cookie, и, таким образом, каждый вызов User.IsInRole попадает в базу данных. Если каждый метод действия будет украшен [Authorize (Roles = "XXXX" )], я увижу серьезные проблемы с производительностью?
Моя другая проблема заключается в том, что я все еще хочу сохранить концепцию роли, чтобы администратор мог просто связать пользователя с ролью, которая имеет предопределенный набор разрешений. Используя вышеприведенный подход, я решил создать отдельный объект в моем приложении с именем Group, и эта группа будет отвечать за отслеживание ролей ASP.NET, назначенных этой группе. Поэтому, когда пользователь связан с группой, я могу получить роли ASP.NET, которые должны быть назначены пользователю, и добавить все роли.
Кто-нибудь реализовал систему таким образом? Любые мнения или мысли по этому подходу будут оценены.
Спасибо