基于操作的用户访问级别

时间:2013-08-23 07:33:05

标签: php javascript user-permissions

我正在开发一个小网站。它有一个产品页面,用户可以在其中执行CRUD功能以及一些导出,上传等操作。我正在表中配置页面级操作。操作类似于ProductView,ProductDetailsView,ProductInsert,ProductUpdate,ProductDelete,ProductExport,ProductUploadViaFile等。

我正在根据页面上的操作级别开发角色。与Role1一样,它具有菜单Product.php的权限,并且在该页面上具有ProductView和ProductInsert的操作权限。假设user1具有角色Role1。

当user1进入Product.php页面时,我正在检查其操作权限。如果他有ProductView我正在向user1显示产品表。我发现代码几乎是在javascript / php级别编码的。像

foreach($useractions in $useraction){
   if($useraction == 'ProductView'){
      //show the product page....
   }
   if($useraction == 'ProductInsert')
   {
     //show create button
   }
}

看起来我必须在有动作级别权限时创建更多代码。再次在另一个动作插入的情况下,我必须再次更改UI级别编码。 我希望有更好的方法来做到这一点。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

您希望从应用程序外部化授权逻辑,以便:

  1. 您无需一直重写授权码
  2. 您可以独立维护授权
  3. 该空间的主要标准是XACML,即可扩展访问控制标记语言。有关详细信息,请查看OASIS XACML webpageWikipedia

    XACML为您提供了执行点(PEP)或拦截器的概念。 PEP到达授权引擎或策略决策点(PDP)。 PDP考虑其政策并最终做出决定(允许或拒绝)。

    例如:

    1. PEP问:用户Alice可以查看产品页面吗?
    2. PDP查看其政策并看到经理可以查看产品页面。它检索Alice的角色并看到Alice是一名经理。
    3. PDP结束是许可并将其返回给PEP。
    4. 我希望这会有所帮助。