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访问控制系统 的相关文章

  • 通过链接导航多个对象而不重复

    我正在尝试浏览一堆带有其他对象链接的对象 我想从 id 1 开始并浏览每个对象 有些对象会循环回到之前的对象 所以我想确保每个对象只查看一次 否则我会陷入无限循环 我还希望能够通过链接导航来判断哪些对象无法访问 我认为导航顺序并不重要 这是
  • 无法打开输入文件应用程序/控制台

    我安装了 wamp 服务器和 Symfony2 框架的副本 我正在尝试使用以下命令创建一个捆绑包 php app console generate bundle nampespace IDP IDP Bundle format yml 我的
  • 检测 JPEG 图像质量

    我允许用户上传图像 但是 我希望保持 JPEG 质量不超过 90 我打算做的是检测当前的质量 如果低于 90 什么都不做 如果超过90 则使用Image Magick将图像重新压缩到90 可以这样做吗 我更喜欢 PHP 但任何语言都会有帮助
  • 用于验证 ip 列表中的 ip 范围的正则表达式

    我有正则表达式用于验证 50 个 ips 逗号分隔的列表 25 0 5 2 0 4 0 9 01 0 9 0 9 3 25 0 5 2 0 4 0 9 01 0 9 0 9 1 50 列表示例 10 10 10 1 127 0 0 1 现在
  • artisan 明确编译返回错误代码 255

    跑步时composer install在我的 laravel 项目中 我收到错误 脚本 php artisan 清晰编译处理返回的 post install cmd 事件 错误代码为 255 关于可能出现的问题有什么建议吗 请注意 comp
  • 数据库表设计

    我在选择数据库表的变量类型时遇到问题 有人可以给我一些关于如何选择类型的一般准则吗 以下是我的一些问题 用户 ID 应该是什么 INT 看起来很小 因为设计时应该考虑到大量用户 那么如果不是 INT 还有什么呢 大整数 VARCHAR 难道
  • PHP 中给定日期的下一个工作日

    有人有一个 PHP 代码片段来计算给定日期的下一个工作日吗 例如 需要如何转换 YYYY MM DD 才能找到下一个工作日 例子 对于 03 04 2011 DD MM YYYY 下一个工作日是 04 04 2011 对于 2011 年 4
  • 如何判断是否ob_start();已经被调用了

    我使用输出缓冲进行 gzip 压缩并访问之前在 PHP 脚本中发布的内容 if ob start ob gzhandler ob start 现在 如果该脚本包含在另一个已使用 ob start 的脚本中 我会收到警告 警告 ob star
  • 如何获取与我当前所在商店相关的产品所属类别 ID

    我在产品页面上并拥有产品对象 但是当我尝试使用以下方式获取类别 id 时 product gt getCategoryIds or product gt getResource gt getAttribute category ids gt
  • 多维数组内的移动

    我有一个用表格显示的数组 如何使用用户输入进行移动 目前 0 被分配给每个数组 但我计划为该数组分配其他值 我的问题是 如何使用用户输入在数组内向上 向下 向右 向左移动和对角移动 Array 0 gt Array 0 gt 0 1 gt
  • 如何在 PHP 中使用 file_get_contents 获取图像的 MIME 类型

    我需要获取图像的 MIME 类型 但我只有图像的正文file get contents 是否有可能获取 MIME 类型 是的 你可以这样得到它 file info new finfo FILEINFO MIME TYPE mime type
  • 在 WooCommerce 管理订单项目上显示产品自定义字段(也适用于可变产品)

    基于在 WooCommerce 的订单编辑页面上显示自定义字段 https stackoverflow com questions 56259910 show custom fields on the order editing page
  • PhpPresentation imagecreatefromstring():数据不是可识别的格式 - PHP7.2

    我正在尝试使用 PhpPresentation 来阅读sample pptx使用文档中为读者提供的简单说明进行文件处理 我得到 imagecreatefromstring Data is not in a recognized format
  • 在 php、ajax 或 javascript 中加载进度?

    任何人都知道如何在系统仍在服务器端获取数据的同时在客户端显示加载进度以及完成的百分比 例如 当我在客户端按下 确定 按钮时 它会调用服务器端从数据库收集数据 整个过程可能需要2到3分钟 如何在客户端显示加载进度 大约加载完成了多少 我怎样才
  • 为什么将 Ubuntu 升级到 22.04 后 phpMyAdmin 停止工作?

    刚刚升级到 Ubuntu 22 04 现在我的 phpmyadmin 无法加载 我收到以下错误 解析错误 语法错误 usr share php Symfony Component DependencyInjection ContainerB
  • 在 GraphQL 服务器中实现访问控制的好模式是什么?

    背景 我有一组模型 包括用户和各种其他模型 其中一些模型包含对用户的引用 我公开这些模型 以便通过 GraphQL API 生成的查询Graffiti https github com RisingStack graffiti 由 Mong
  • array_merge 更改键

    我得到以下数组 arr array 6 gt Somedata 7 gt Somedata1 8 gt Somedata2 问题是 当我使用array merge array Select the data arr 它确实将数组键更改为 A
  • 获取url,给定的url重定向到

    我从 rss 链接中挖掘数据并获得一堆网址 例如 http feedproxy google com r electricpig 3 qoF8XbocUbE http feedproxy google com r electricpig 3
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • PHP 如何判断用户是否按下了 Enter 键或 Submit 按钮?

    我遇到的问题是我在一个表单中有多个提交输入 每个提交输入都有不同的值 我更愿意将它们保留为提交 Whenever the user presses Enter it is as though the topmost submit input

随机推荐

  • 在 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 页面的用户权限 即根据