2

我的用户属于以下类型

  • 未登录
  • 未经审核的
  • 已验证
  • 版主
  • 行政

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

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

4

1 回答 1

2

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

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

这使得根据需要创建新组和/或更改权限分配以执行特定功能的用户组变得相当容易。特别是,它允许以管理方式更改此类权限,而不需要重写代码。

于 2010-03-16T03:15:50.003 回答