我该如何组织权威代码?

时间:2010-03-15 03:01:28

标签: language-agnostic authorize

我的用户属于以下

  • 未登录
  • 未经验证
  • 验证
  • 主持人
  • 管理

只有管理员和管理员可以访问的所有代码(如禁止)都在ModeratorUser中继承自从BaseUser继承的已验证的代码。某些页面可供所有用户访问,例如公共配置文件。如果用户已登录,则可以发表评论。要检查这一点,我使用if (IsVerifiedUser)。现在这是问题所在。如果用户被禁止以避免问题,则不会将其识别为经过验证的用户。但是在极少数情况下我需要知道他是否已经过验证我可以使用usertype & Verified

我不应该这样做吗?我在我的VerifiedUser类中有一堆代码,发现我正在将它移动到BaseUser。这是我帮助的,因为未登录的用户可以访问该页面吗?我是否应该以不同的方式处理禁止用户并允许IsVerifiedUser为真,即使用户被禁止?

1 个答案:

答案 0 :(得分:2)

至少在我看来,大多数情况应该用数据来处理,而不是代码。硬编码(例如)操作X只能由管理员完成的事实往往相对脆弱。现在,你有五类用户,但(仅举例)你几乎不可避免地(沿线的某个地方)最终发明了一些其他类的用户,并且必须重新组织相当多的代码才能适应(例如,主持人和管理员之间的一个新步骤,或者可能是一个低于正常验证用户的“限制用户”,等等。)事实上,你已经基本上与你的“禁用”用户碰面了,这个用户大多喜欢未经验证的用户,但在某些方面类似于经过验证的用户。

每次你决定这样的改变时都必须重写代码是一个糟糕的主意。相反,您应该(可能)预先定义您的五个(或可能六个)用户组,并(例如)为每个用户组分配一个位。同样,为每个函数分配一个位掩码。要验证给定用户是否可以执行给定的功能,请将这些位掩码放在一起,并查看用户是否在掩码中设置了相应的位。

这使得根据需要创建新组和/或更改用于执行特定功能的权限分配给用户组变得相当容易。特别是,它允许在管理上完成对这些权限的更改,而不是要求重写代码。

相关问题