【问题标题】:user access levels based on action基于操作的用户访问级别
【发布时间】:2013-08-26 04:16:12
【问题描述】:

我正在开发一个小型网站。它有一个产品页面,用户可以在其中通过一些导出、上传等操作执行 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 级别的编码。 我希望有更好的方法来做到这一点。任何建议都会有很大帮助。

【问题讨论】:

  • 这是一个基本的基于 php、javascript 的 web 应用程序
  • 以上代码是用什么语言写的?如果是 JavaScript,=== 运算符是什么?如果是 PHP,那么 for (... in ...) 子句和没有前导 $ 的变量是什么?
  • 这不是纯代码,只是展示编码视图。我将其更改为 php 以便更好地理解。

标签: php javascript user-permissions


【解决方案1】:

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

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

该领域的主要标准是 XACML,即可扩展访问控制标记语言。查看 OASIS XACML webpageWikipedia 了解更多信息。

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

例如:

  1. PEP 询问:用户 Alice 可以查看产品页面吗?
  2. PDP 查看其政策并发现经理可以查看产品页面。它检索 Alice 的角色,发现 Alice 是经理。
  3. PDP 得出“是”许可并将其返回给 PEP。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 2014-10-11
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多