IRC Bot中的插件权限

时间:2009-12-25 04:54:45

标签: c# plugins irc

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

权限系统为1-10。 1是最不幸的,10是最多的。每个用户将被分配1-10个权限。每个命令还会为自己分配一个必需的权限级别。我的问题基本上是:我怎么能建立一个每个命令权限系统,插件可以在其中包含多个命令。

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

2 个答案:

答案 0 :(得分:1)

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

然后,在所有方法(意味着您的插件方法和其他方法)上应用PrincipalPermission属性,以允许具有相应角色的人员仅执行代码。

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

你可以让一个方法有一个PrincpalPermission属性,其中Role属性设置为6,我无权访问,另一个方法有一个PrincipalPermission属性,其Role属性设置为3,我愿意。

答案 1 :(得分:0)

肯定会有效,另一种方式是'能力'的概念。每个用户都有一个功能列表,如'update-user','delete-user','download-file'等,列表是无限的。您可以授予用户功能,并且每个功能都可以根据所需的列表进行检查

if(!checkCaps('shell-cmd','google','open-url'))sendError('抱歉,没有烫发')

可以定义聚合一组权限的角色,例如“访客”,“用户”,“经理”,“管理员”等。