Обработка нескольких ролей в MVC - доступность на основе действий

В настоящее время у меня есть проект, в котором я, кажется, столкнулся с проблемой, касающейся ролей, и подумал, что смогу получить некоторые мнения о том, как лучше всего решить эту проблему.

Система потребует редактируемых, гибких ролей, которые управляют не только доступом к определенным областям, но также и использованием системных функций (добавление пользователей, редактирование пользователей, просмотр отчетов и т. Д.).

В настоящее время система позволяет пользователям иметь несколько ролей, каждая из этих ролей имеет явно определенные области доступа / действий, например:

  • Роль 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
<%}%>

Итак, в основном, меня интересуют следующие вещи:

  1. Как лучше всего сохранить этот Словарь после входа в систему? Статически? В сеансе?
  2. Каким будет лучший способ хранения, чтобы к словарю можно было легко получить доступ в представлении? (Поскольку в настоящее время я не вижу возможности обернуть мои клиентские функции)

Мы будем очень благодарны за любые советы или идеи!

11
задан Rion Williams 29 March 2011 в 21:01
поделиться