PHP访问控制系统

2023-11-22

我是使用 PHP 和 MySQL 创建 Web 应用程序的团队的一员。该应用程序将有多个具有不同角色的用户。该应用程序还将以地理分布的方式使用。因此,我们需要创建一个在以下两个级别运行的访问控制系统:

  1. 控制特定 php 页面的用户权限,即根据用户的角色提供或拒绝对特定页面(或用户界面元素)的访问。例如:用户可能被允许访问“学生”页面,但不允许访问“教师”页面。
  2. 控制特定数据库记录的用户权限,即修改数据库查询以便仅显示特定记录。例如,对于城市级别的用户,仅应显示与用户的特定城市相关的那些记录,而对于国家级别的用户,应显示该国家/地区所有城市的记录。

我需要帮助设计一个可以处理这两种类型的访问控制的系统。点号。 1 看起来很简单。然而,我完全不知道如何在不硬编码 SQL 查询中的信息的情况下执行第 2 点。

任何帮助,将不胜感激。

提前致谢

Vinayak


几个月前我也遇到过类似的情况。我发现,如果您只检查单个项目(或数量相当少的项目)的访问级别,像 Zend_ACL 这样的工具就可以很好地工作。当您需要获取允许用户访问的大量项目列表时,它会失败。我使用以下方法精心设计了这个问题的自定义解决方案业务代表图案。 BD 提供可应用于特定上下文的业务逻辑。本场景下发了一条SQL逻辑,作为子查询的过滤条件。参见下图:

alt text
(source: epsi.pl)

以及说明调用顺序的序列图:

alt text
(source: epsi.pl)

我在博客上介绍了这个解决方案,不幸的是,这一切都是波兰语,但您可能会发现方便的代码和图表。我可以说,实现并不是小菜一碟,但在性能方面,与列表中每个元素的迭代访问检查相比,它是冠军。此外,上述基础设施不仅处理列表中的一种类型的项目。它可以在访问不同的列表时提供服务,无论是城市列表、国家列表、产品列表还是文档列表,只要列表中的项目实现IAuthorizable界面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP访问控制系统 的相关文章

随机推荐

  • 在 C# 应用程序中存储数据的最佳方式是什么[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我想制作 Cookbook 应用程序来存储和阅读 和更新 菜谱 或者其他任何东西来练习 OOP 编程和思维 但是 我不确定在 C Visual Studio Express 中哪种存储数据
  • 亚马逊 MWS API 中的请求限制问题

    我正在测试 API 示例使用 C 编写的 Amazon MWS API 用于提交 Feed但是在代码中设置 AWS Secret key access key 等之后 我收到了 RequestThrottled 错误 因此详细说明了这是什么
  • Java中将字节转换为长度为4的布尔数组

    我需要在 Java 中将一个字节转换为 4 个布尔值的数组 我该怎么办 根据 Michael Petrotta 对您问题的评论 您需要决定应该针对生成的布尔数组测试 8 位字节中的哪些位 出于演示目的 我们假设您想要最右边的四个位 那么类似
  • 将鼠标悬停在 nightwatchjs 中的链接上

    我一直在使用nightwatch js并且总是在元素周围点击 有没有办法让我们将鼠标悬停在链接或按钮上 Try the browser moveToElement命令 您还可以在之后触发回调moveToElement完成 browser w
  • 保护ajax请求完整性的最佳方法

    我正在构建一个 Drupal 网站 其中包含大量用户特定信息 这些信息将使用 jQuery ajax 发布 它本身的信息不是很敏感 重要的是验证表单数据没有被 Firebug 等工具篡改 并确保该信息确实是从指定用户请求的 换句话说 我试图
  • while($row = mysql_fetch_assoc($result)) - 如何 foreach $row?

    我正在开发一个简单的订单系统 我所坚持的代码如下 if isset GET cart cart array total 0 foreach SESSION cart as id foreach items as product if pro
  • 我使用 gRPC 生成 java 代码“@javax.annotation.Generate”,它报告“错误:(20,18) java: 找不到符号”。怎么解决?

    我使用 gRPC 生成代码 javax annotation Generate 如下图所示 然后我使用maven构建项目 它报告 Error 20 18 java cannot find symbol 如下图所示 怎么解决 你可以加java
  • 创建聊天布局?

    我尝试在 xml 中创建一个 android 聊天布局 但我无法得到我想要的东西 这是我能得到的最接近的
  • 使用 O/R 映射时从哪里开始设计?对象还是数据库表?

    我正在启动一个新的数据库应用程序 我想知道是否最好从对象开始设计 使用 UML 并相应地构建数据库模式 或者从设计数据库 使用 ER 开始并创建对象是否会更好因此 这两种方法的优点和缺点是什么 我认为这并不重要 但以防万一 我计划使用 Ja
  • “删除不必要的使用”在 Visual Studio 2015 中不起作用

    我有几个项目的解决方案 Remove unnecessary usings正在参与除一个项目之外的所有项目 为什么Remove unnecessary usings命令not在一些项目中工作 Edit 正如你所看到的Before图像没有Re
  • CompletableFuture 链结果

    我试图将方法的调用 结果链接到下一个调用 我收到编译时错误 methodE 因为如果无法从上一次调用中获取 objB 的引用 如何将上一个调用的结果传递到下一个链 我完全误解了这个过程吗 Object objC CompletableFut
  • 抽象类与所有方法抽象和接口之间的区别?

    我有一次面试 面试官首先问我具有所有抽象方法的抽象类和接口之间有什么区别 我回答说 如果以后需要继承一些东西 如果你已经扩展了一个类 你就无法继承 然后 他说这是一种情况 永远不需要延长任何其他课程 你必须执行合同 在这种情况下 抽象类和接
  • 为什么欧洲/柏林时区的偏移量为 0:53?

    示例代码 from datetime import datetime timezone import pytz tzstring Europe Berlin t1 datetime 2016 6 16 2 0 tzinfo pytz tim
  • 找到最接近某个值的公约数的有效算法?

    我有两个号码 x1 and x2 对于一个号码y 我想计算的公约数x1 and x2尽可能接近y 有一个有效的算法吗 我相信是时候重新表述我的问题并且更加清楚了 这与整数无关 所以 假设我们有两个数字x1 and x2 比如说 用户输入一个
  • React 访问 axios 拦截器中的 redux 存储

    I want to access redux store in axios s interceptor which configures jwt token so I import the store into the API js fil
  • Toolkit.getDefaultToolkit().createImage() 与 ImageIO.read()

    我正在使用 Swing 创建一个 UI 我想在JLabel 我使用的代码如下 JLabel label new JLabel new ImageIcon ImageIO read new File img jpg 如果我使用的话效果很好pn
  • 对矩阵的每个元素使用 max

    gt x lt array 10 10 dim c 4 5 gt x 1 2 3 4 5 1 10 6 2 2 6 2 9 5 1 3 7 3 8 4 0 4 8 4 7 3 1 5 9 如何将 max x 0 应用于每个元素 以便得到这个
  • JavaFX TreeView 的多种对象类型? (和更多)

    我目前有以下对象数据结构 Item 字符串名称 信息的数组列表 特点 字符串名称 收集Item Account 字符串名称 收集特点 最多 8 个 我想制作一个如下所示的 TreeView Root invisible Jake Accou
  • 在 Linux 上使用 Mono 运行 SignalR .Net 客户端 - 可能吗?

    有谁有运行经验SignalR net 客户端在单声道上 我正在考虑将其用于需要运行跨平台的进程 需要连接到互联网托管的 SignalR Hub 我创建了一个在 mono 框架下使用 signalr 客户端工作的示例项目 https gith
  • PHP访问控制系统

    我是使用 PHP 和 MySQL 创建 Web 应用程序的团队的一员 该应用程序将有多个具有不同角色的用户 该应用程序还将以地理分布的方式使用 因此 我们需要创建一个在以下两个级别运行的访问控制系统 控制特定 php 页面的用户权限 即根据