1

我和我的朋友正在编写一个 C# IRC Bot,它允许用户通过插件扩展它的功能。我们需要它,以便每个命令都能够拥有自己的权限。这样只有特定级别或更高级别的用户才能执行该命令。我们很难决定如何做到这一点。

权限系统为 1-10。1 是特权最少的,10 是最多的。每个用户将被分配一个 1-10 的权限。每个命令还将为自己分配所需的权限级别。我的问题本质上是:我如何制作一个每个命令权限系统,其中的插件能够在其中包含多个命令。

我希望 Stack Overflow 的好人能帮助我。请耐心等待,因为这是我在这里提出的第一个问题。任何帮助将不胜感激!谢谢!

4

2 回答 2

1

我将创建您自己的 IPrincipal 实现,它将为代表用户拥有的授权级别的角色返回 1-10 的值。然后,在对用户进行身份验证时,将其分配为主体权限。

然后,将 PrincipalPermission 属性应用于所有方法(即您的插件方法和其他方法)以允许具有适当角色的人员仅执行代码。

例如,如果我有 5 级,那么我将被分配角色 1、2、3、4、5。

您可以让一种方法具有 PrincpalPermission 属性,其中 Role 属性设置为 6,我将无法访问该方法,而另一种方法具有 PrincipalPermission 属性且 Role 属性设置为 3,我会这样做。

于 2009-12-25T05:06:29.693 回答
0

这肯定会奏效,另一种方式是“能力”的概念。每个用户都有一个功能列表,例如“更新用户”、“删除用户”、“下载文件”等。该列表是无限的。您可以授予用户功能,并且每个功能都可以检查它需要的所需列表

if (!checkCaps('shell-cmd', 'google', 'open-url')) sendError('sorry, no perms')

可以定义角色来聚合一组权限,例如“guest”、“user”、“manager”、“admin”等。

于 2009-12-25T05:05:29.203 回答