为用户实现一组权限的设计模式
本文关键字:一组 权限 设计模式 用户 实现 | 更新日期: 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模式。
尽管这很大程度上取决于你的需求