首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >规划php系统时的一些想法

规划php系统时的一些想法
EN

Stack Overflow用户
提问于 2010-01-27 19:40:57
回答 2查看 198关注 0票数 0

我正准备构建一个相对较大的PHP系统,我只需要一些关于如何实现某个功能的想法。

我将允许用户注册。注册后,用户将拥有一个安全级别,该安全级别将分配给其帐户。

因此,如果我有安全级别1、2和3,那么向具有特定安全级别的人显示某些内容的最佳方式是什么?

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-27 21:24:59

Pekka关于查看Zend API的评论很好。许多PHP框架目前(可悲的)都是糟糕的垃圾实现(下面有可怕的业余代码),但Zend API几乎是唯一有价值的。

如果你使用自己的方法,如果你不能找到适合你想要的东西(并且不容易扩展),那么我会采用面向对象的方法,并通过一个类公开用户属性。

例如:

代码语言:javascript
运行
复制
$user = new User($session->userId);
if (!$user->isAdministrator && !$user->canViewReports)
    someErrorHandler("You do not have permission to access this content.");

我会避免使用固定的级别,而是遵循基于角色的方法。

也就是说,我会避免像这样的级别:

  • Staff
  • Manager
  • Administrator

取而代之的是属性(就像说明性的例子一样):

  • read_access
  • write_access
  • can_view_logs
  • can_view_reports
  • is_administrator

这样,当您(不可避免地)发现您需要一个额外的权限组时,您可以轻松地更明确地显示,您必须返回并更改现有代码。

这并不意味着将用户分组是一个坏主意(这不是一个坏主意,您可以使用组系统实现这一点,例如,用户可以在“报告”和“日志”中的位置),但假设安全级别是分层的通常是错误的方法(例如,Level 1=Staff,Level 2=Managers,Level 3=Admin) -这是因为您最终几乎总是需要一个比简单分层系统所允许的更灵活的系统。

在实践中,如果您最终采用了这种方法,您可能希望拥有一个Permissions或Group类,以避免拥有过大的User类(最终可能会充满用于获取用户属性、设置新密码等的内容)。

例如:

代码语言:javascript
运行
复制
$group = new Group($session->userId);
if (!$group->Administrators && !$group->Reporting)
    someErrorHandler("You do not have permission to access this content.");
票数 3
EN

Stack Overflow用户

发布于 2010-01-27 19:42:29

在你重新发明轮子之前,一定要看看是否适合你。我自己没有用过它,但从它在文档中的承诺来看,它可以做你需要的事情,甚至更多。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2146507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档