Модуль на основе безопасности - PullRequest
0 голосов
/ 22 января 2010

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

Кто-нибудь видел примеры подобных проектов или есть какие-либо подсказки, как это реализовать? Я действительно хотел бы попробовать это на n-слойной архитектуре.

Ответы [ 2 ]

1 голос
/ 22 января 2010

Создайте свой сайт с базовой системой членства. Сгруппируйте свои страницы в папки и в каждой из них есть файлы Web.Config для контроля доступа. Это все готовые функциональные возможности по большей части. Единственный пользовательский код, который вам нужно написать, - это при создании формы администратора.

Что касается детального доступа, если они не могут получить доступ к страницам, они не могут получить доступ к своим методам ...

http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

UPDATE:

if User.IsInRole ("Администратор") ...

http://www.4guysfromrolla.com/articles/082703-1.2.aspx

На той же странице в выделенном фрагменте кода вы можете программно проверить их роли и соответственно отобразить / включить панели / модули: -)

0 голосов
/ 24 января 2010

Я бы использовал базовый класс для ваших страниц для достижения эффекта, который вы описываете. В ваш базовый класс вы можете добавить все доступные вам методы, но предоставьте метод авторизации в базовом классе, который позволит методам идентифицировать себя на основе ролей, которые им разрешено иметь. Все это можно настроить с помощью web.config, если вы спланируете это. Часто метод, основанный на «папках» для членства в SQL, недостаточно надежен.

Полагаю, в качестве примера вы могли бы создать собственное (или найти его в перечислении безопасности System.Security) пространство для определения уровней доступа, а затем сопоставить уровни доступа из ваших групп в AD (или где бы то ни было) с перечислениями. Методы могут затем использовать перечисление безопасности для вашего пользовательского объекта, чтобы определить, разрешает ли доступ пользователя функцию.

...