В настоящее время у меня есть проект, в котором я, похоже, столкнулся с проблемой в отношении Ролей, и подумал, что я получу некоторые мнения о том, как лучше всего справиться с этой проблемой.
Система потребует редактирования, гибкие роли, которые контролируют не только доступ к определенным областям, но также использование системных функций (добавление пользователей, редактирование пользователей, просмотр отчетов и т.д.).
В настоящее время система позволяет пользователям иметь несколько ролей, каждая из этих ролей имеет явно определенные области доступа/действия, например:
- Роль A может иметь доступ к областям 1,2,3 и может добавлять пользователей.
- Роль B может получить доступ к областям 1,5,7 и может изменять пользователей.
- Роль C может обращаться к областям 4,6 и просматривать только пользователей.
поэтому пользователь может находиться в Ролях A и C и, таким образом, получить доступ: 1,2,3,4 и 6 и может добавлять и просматривать пользователей.
Мое первое решение заключалось в создании словаря, который сохранил бы все возможные области доступа/доступа в словаре, например:
Dictionary<string,bool>
то при его создании он вытаскивает все свойства из базы данных и затем выполняет итерации через роли, чтобы определить, доступны ли они.
Все это в настоящее время работает очень хорошо - однако проект довольно интенсивно Javascript/jQuery, поэтому многие из этих параметров вызываются клиентскими функциями. Я стараюсь не включать все эти функции на стороне клиента:
<%if(AccessDictionary[key])
//Enable or Disable Action
<%}%>
Итак, в основном, мне интересно о следующих вещах:
- После входа пользователя в систему, что является лучшим способом для хранения этого словаря? Статически? В сеансе?
- Какой был бы лучший способ хранения, чтобы словарь легко доступен в представлении? (Поскольку я в настоящее время не вижу возможности обойти мои клиентские функции)
Приветствуются любые советы или идеи!