繁体   English   中英

基于操作的用户访问级别

[英]user access levels based on action

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

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

当user1转到Product.php页面时,我正在检查其操作权限。 如果他具有ProductView,则向用户显示产品表。 我发现该代码在javascript / php级别几乎是硬编码的。 喜欢

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

似乎在具有操作级别权限时,我必须创建更多代码。 同样,如果要执行其他操作,我必须再次更改UI级别编码。 我希望有更好的方法可以做到这一点。 任何建议都会有很大帮助。

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

  1. 您不必一直重写授权代码
  2. 您可以独立维护授权

该领域的主要标准是XACML(可扩展访问控制标记语言)。 请查看OASIS XACML 网页Wikipedia了解更多信息。

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

例如:

  1. PEP问:用户Alice可以查看产品页面吗?
  2. PDP会查看其政策,并发现管理者可以查看产品页面。 它检索Alice的角色,并看到Alice是经理。
  3. PDP同意同意,然后将其退还给PEP。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM