我正准备构建一个相对较大的PHP系统,我只需要一些关于如何实现某个功能的想法。
我将允许用户注册。注册后,用户将拥有一个安全级别,该安全级别将分配给其帐户。
因此,如果我有安全级别1、2和3,那么向具有特定安全级别的人显示某些内容的最佳方式是什么?
提前谢谢你。
发布于 2010-01-27 21:24:59
Pekka关于查看Zend API的评论很好。许多PHP框架目前(可悲的)都是糟糕的垃圾实现(下面有可怕的业余代码),但Zend API几乎是唯一有价值的。
如果你使用自己的方法,如果你不能找到适合你想要的东西(并且不容易扩展),那么我会采用面向对象的方法,并通过一个类公开用户属性。
例如:
$user = new User($session->userId);
if (!$user->isAdministrator && !$user->canViewReports)
    someErrorHandler("You do not have permission to access this content.");我会避免使用固定的级别,而是遵循基于角色的方法。
也就是说,我会避免像这样的级别:
取而代之的是属性(就像说明性的例子一样):
这样,当您(不可避免地)发现您需要一个额外的权限组时,您可以轻松地更明确地显示,您必须返回并更改现有代码。
这并不意味着将用户分组是一个坏主意(这不是一个坏主意,您可以使用组系统实现这一点,例如,用户可以在“报告”和“日志”中的位置),但假设安全级别是分层的通常是错误的方法(例如,Level 1=Staff,Level 2=Managers,Level 3=Admin) -这是因为您最终几乎总是需要一个比简单分层系统所允许的更灵活的系统。
在实践中,如果您最终采用了这种方法,您可能希望拥有一个Permissions或Group类,以避免拥有过大的User类(最终可能会充满用于获取用户属性、设置新密码等的内容)。
例如:
$group = new Group($session->userId);
if (!$group->Administrators && !$group->Reporting)
    someErrorHandler("You do not have permission to access this content.");发布于 2010-01-27 19:42:29
在你重新发明轮子之前,一定要看看是否适合你。我自己没有用过它,但从它在文档中的承诺来看,它可以做你需要的事情,甚至更多。
https://stackoverflow.com/questions/2146507
复制相似问题