1

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

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

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

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

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

    优点:访问速度快,简单

    缺点:我必须运行 PHP 请求,并且评估成功是否混乱

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

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

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

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

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

    缺点:似乎它可能很脆弱

我希望在整个应用程序中对用户特权进行相当程度的评估,因此我很感激专家为解决我认为相当普遍的问题所做的任何建议。我可能错过了一些明显的东西。

谢谢。

** 作为回应 **

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

4

1 回答 1

1

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

于 2013-03-13T10:02:22.400 回答