在哪里/如何设置一个类来控制用户可以做什么(特权)?

时间:2011-03-28 10:04:50

标签: php permissions acl privileges privilege-elevation

我正在使用一个基于$ _POST ['action']执行正确查询的类。 例如:

class data {     //>pseudocode
 __constructor(){
   if ($_POST['action']=='insert')
      mysql_query("INSERT ..");
   else if ($_POST['action']=='edit') 
      mysql_query("UPDATE ..");
 }
}

现在我当然希望阻止用户做一些他不能做的事情......例如编辑其他人的帖子,或者更复杂的事情,就像他只有在尚未发布时才可以编辑他的帖子。一旦帖子发布,他就不能再编辑(或者可能是基于时间的东西)

您如何在class data中添加此项检查?我曾经听说过Zend_ACL是否适合这种情况?

编辑:我会避免使用数据库存储权限

Edit2:我想这样做:每个用户都有“级别”,级别= 1表示你是管理员,级别= 2表示你是编辑,级别3 =表示你是一个简单的用户。

所以在每个级别都有一些特权。现在我应该把这些信息放在哪里?

TY

2 个答案:

答案 0 :(得分:0)

你必须在你的表中设置flag,然后检查那些标志..根据你可以开发访问层

主要是你的表必须有这些字段

post_id(PK) | post_by(user_id of the post owner) |is_published(ENUM (Y,N))

现在在编辑该帖子时检查以下内容

  • 首先记录的当前用户ID和post_by id是否相同

    • 如果是,则检查is_published是否设置为YN
      • 如果N则不允许编辑
      • if Y然后允许编辑

答案 1 :(得分:-1)

您的伪代码对我来说非常简单 。在构造函数中做所有事情?或者如何翻译它?

IMO首先需要定义您的需求。哪些任务是允许的,哪些不是?如果你有大纲,你也有解决方案。