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

本文关键字:一组 权限 设计模式 用户 实现 | 更新日期: 2023-09-27 18:16:49

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

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

如果有人有一个地方可以读到这一点,这也很有帮助。由于

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

c#/. net中有内置的权限函数

函数的访问要求可以通过PrincipalPermissionAttribute类设置,也可以在带有PrincipalPermission的代码中设置。为了防止方法被调用,除非当前用户是Administrators角色的成员,使用以下属性(来自MSDN的示例):

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

这两种方法都检查调用线程的当前标识。因此,您需要做的是实现IPrincipal接口,以允许将用户设置为线程标识。然后可以使用标准的。net PrincipalPermission来检查安全性。

如果一个用户可以有多个许可证,每个许可证允许不同的执行任务,那么你可能需要看看decorator模式。

尽管这很大程度上取决于你的需求