【发布时间】:2010-03-16 11:15:50
【问题描述】:
我的用户属于以下类型
- 未登录
- 未验证
- 已验证
- 版主
- 管理员
只有管理员和版主才能访问的所有代码(如禁止)都在从 BaseUser 继承的已验证继承的 ModeratorUser 中。某些页面可供所有用户访问,例如公共配置文件。如果用户登录,他可以发表评论。要检查这一点,我使用if (IsVerifiedUser)。现在问题来了。为避免用户被禁止时出现问题,他不会被识别为经过验证的用户。但是在极少数情况下,我需要知道他是否经过验证,我可以使用usertype & Verified。
我不应该这样做吗?我的 VerifiedUser 类中有一堆代码,发现我正在将大量代码移至 BaseUser。这是我的帮助,因为未登录的用户可以访问该页面吗?我是否应该以不同的方式处理禁止用户并允许 IsVerifiedUser 为真,即使该用户被禁止?
【问题讨论】:
-
你在这些类中有什么样的代码?该代码应该是关于成为用户,而不是关于允许特定类型的用户做的事情。
-
@John Saunders 查看我离开杰瑞的第一条评论
-
@acidzombie:Jerry 的 cmets 正是我所担心的。您将代码按用户的能力分组,而不是按功能分组。当规则改变时,你必须改变你的类层次结构。不好。
-
@John Saunders:我主要需要做一些小事,比如移动 PrivateMessage pm;进入 BaseUser 而不是 VerifiedUser。但是,我确实需要将一些特定于页面的功能(例如 ViewPrivateMessage)移动到可能是 BannedUser (我可能会创建它,它高于无法对 PM 做任何事情的未验证用户,低于可以发送 PM 的 VerifiedUser)。代码组织得很好,但是有很多页面特定的功能,我试图通过不允许 UnverifiedUsers 访问 pm 变量来减少错误。如果 PM 仍然是它自己的类,这还不好吗?
-
@acidzombie:你的结构错误地接管了用户的类层次结构,成为权限层次结构。不要那样做。
标签: language-agnostic authorize