设计模式,为用户实现一组权限

mbm*_*ura 6 c# design-patterns

我正在尝试使用设计模式或一个良好的面向对象的解决方案来找出实现和编码以下内容的正确方法:

有一个用户类可以包含一组变量许可,每个允许他对应用程序执行不同的操作.这个想法是能够告诉某个用户对象,例如删除一个订单,如果他有任何允许他这样做的许可,那么就做,如果没有,则提出异常.

如果某人有一个地方可以阅读这个,那也是有帮助的.谢谢

And*_*bel 5

C#/ .NET中有内置的权限功能.

函数的访问要求是通过PrincipalPermissionAttribute类或代码内部设置的PrincipalPermission.除非当前用户是Administrators角色的成员,否则为了防止调用方法,使用以下属性(来自MSDN的示例):

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

这两个都检查调用线程的当前标识.因此,您需要做的是实现IPrincipal接口以允许将用户设置为线程标识.然后,您可以使用标准.NET PrincipalPermission来检查安全性.它完全按照您的意愿工作 - 如果不满足安全性要求,则抛出异常.


Zoh*_*aib 1

如果一个用户可以拥有多个许可,每个许可允许不同的执行任务,那么您可能想看看装饰器模式。

尽管这在很大程度上取决于您的要求。