шаблон проектирования для реализации набора разрешений для пользователя - PullRequest
6 голосов
/ 04 декабря 2011

Я пытаюсь найти правильный способ реализации и кодирования следующего с использованием шаблонов проектирования или хорошего объектно-ориентированного решения:

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

Если у кого-то есть место, где можно прочитать об этом, это тоже полезно. спасибо

Ответы [ 2 ]

5 голосов
/ 04 декабря 2011

В C # /. NET имеются встроенные функции для разрешения.

Требования к доступу к функции задаются с помощью класса PrincipalPermissionAttribute или внутри кода с помощью PrincipalPermission.Чтобы предотвратить вызов метода, если текущий пользователь не является членом роли Administrators, используется следующий атрибут (пример из MSDN ):

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
static void CheckAdministrator()
{
    Console.WriteLine("User is an administrator");
}

Обе эти проверкипротив текущей идентичности вызывающего потока.Итак, вам нужно реализовать интерфейс IPrincipal, чтобы ваши пользователи могли быть установлены в качестве идентификатора потока.Тогда вы можете использовать стандарт .NET PrincipalPermission для проверки безопасности.Он работает точно так, как вы хотите - если требование безопасности не выполнено, возникает исключение.

0 голосов
/ 04 декабря 2011

Если у одного пользователя может быть несколько разрешений, каждое разрешение разрешает разные задачи выполнения, тогда вы можете взглянуть на шаблон decorator .

, хотя это во многом зависит от ваших требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...