php - 如何使用 Javascript/PHP/MySQL 定义和使用站点级别 "User Privilege Level"变量

标签 php javascript global-variables privileges access-levels

我通常倾向于讨论具体的技术问题,但这是一个相当开放的问题,但仍处于问答而非讨论的范围内。

它考虑了用户级别权限的最佳实现,以规范 Web 应用程序中可以做什么和不能做什么。

我将从一个例子开始。我想从数据库中删除一部分。我以 Jon Doe 身份登录。 Jon Doe 具有访问权限级别 1(sql 数据库中的列),因此无法删除部分。我将使用 javascript (jQuery) 触发 ajax PHP 函数来执行删除。

所以,我提出了一些选择,但我确信还有更好的选择。

  1. 我可以在登录时设置 PHP“用户级” session 变量,在 Ajax PHP 删除请求中进行评估并返回成功函数,让用户知道访问被拒绝。

    优点:访问速度快,简单

    缺点:我必须运行 PHP 请求,并且无法评估成功

  2. 我可以运行一个 PHP 预定义函数,该函数在 Ajax PHP 删除请求中查询 mySQL 的用户权限,然后返回成功函数并让用户知道访问被拒绝。

    优点:实时评估(不一定重要,但允许在用户保持登录状态时更改权限)

    缺点:我必须运行 PHP 请求,并且无法评估成功

  3. 我可以在运行 Ajax PHP 删除请求之前查询的 Ajax Javascript/PHP 登录过程中创建一个全局“用户级”javascript 变量(附加到窗口?)。

    优点:停止不必要的ajax请求,非常整洁和简单

    缺点:看起来它可能很脆弱

我希望在整个应用程序中对用户权限进行相当程度的评估,因此我非常感谢有关专家为解决我认为相当常见的问题所做的工作的任何建议。我可能错过了一些明显的事情。

谢谢。

** 回应 **

啊,这很有趣。是的,有一个加载模板界面,每个内容面板都是通过 ajax 加载的。我并没有真正考虑过将禁用或删除界面按钮作为“先发制人的打击”。我也喜欢首先进行 javascript 检查,同时在 PHP 端进行检查来支持它的想法。如果用户已经无法达到所需的访问级别,这将避免我必须执行不必要的 Ajax 调用。

最佳答案

为了安全性和可用性,请从 PHP 端处理此问题,利用 session 来存储用户 ID。当且仅当用户具有删除权限时,让 PHP 提供删除链接。当收到删除请求时,再次检查用户是否具有删除权限。这可以确保如果用户在收到删除链接后失去权限,他/她将无法删除。如果您在应用程序中大量使用 AJAX,并且界面仅加载一次,那么当用户的权限已增强时,您应该在收到任何请求时将某种状态变量发送到浏览器。此状态变量应触发 UI 重新加载,以便现在启用适当的链接/按钮/功能。这不是最简单的解决方案,但它是最强大的,并且可以实现您正在寻找的一切。

关于php - 如何使用 Javascript/PHP/MySQL 定义和使用站点级别 "User Privilege Level"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15381800/

相关文章:

php - 使用 Elastica 库删除 ElasticSearch 中的文档

php - 从 Javascript 动态创建 HTML 页面

javascript - 和兼容的单例 Backbone.Model

javascript - 在 FireBug 控制台中设置一个 js 变量

Python 变量作用域和 .var

php - 将总行数除以所有行的总和 - Laravel

php - PHP 中的通用声明表达式构建器

javascript - 我怎样才能将这支笔的代码整合到我的网站上?

javascript - 如何将双/多斜杠替换为 url 中的单斜杠

javascript - 在 Canvas 上放大 d3js 力模拟