【问题标题】:What is the proper way to limit access to many pages upon user basis?根据用户限制对许多页面的访问的正确方法是什么?
【发布时间】:2013-02-19 04:46:40
【问题描述】:

限制访问。我有一张表,为了简化,它有 3 列。用户,通过,访问。

我有 4 种类型的页面...一种需要 1 个,也就是超级管理员。另一个需要 2 个,也就是一般管理员……另外 3 个,用于 mod。最后,任何用户都可以访问。

我可以写代码,但是我该怎么做呢?

我自己提出了 2 个选项:进入我的库的函数包含我包含的文件,如果他们不应该能够访问,它会重定向到“受限”

还有其他选择吗?最常见的方法是什么?重用代码最有效。

【问题讨论】:

  • 你在使用框架吗? Zend 有认证和授权模块。
  • 只是聪明的模板管理器,如果它意味着什么

标签: php mysql database authentication


【解决方案1】:

我唯一真正的建议是:不要编写自己的 ACL 库.. 那里有很多。看看https://packagist.org/search/?q=acl,看看是否有一个看起来适合您的用例。我一直在看https://github.com/alexshelkov/SimpleAcl,它可能是一个不错的开始(虽然我自己没有使用过)。

【讨论】:

【解决方案2】:

有两种方法可以实现您想要实现的目标。我通常采用的方式是根据访问级别隐藏链接。如果不允许用户查看特定内容,请创建一个函数来隐藏链接并仅向具有正确权限的用户显示。

如果用户键入受限页面的 URL,那么他们应该被重定向到默认页面,可能是主页,或者解释为什么他们不能去“这里”的页面。您只需要测试权限,并且有一个默认的目标页面。任何“安全”页面都应该简单地根据页面级别测试当前访问级别,如果不等于或更高则重定向。

另一种方法是创建一个默认的“拒绝访问”页面,当用户没有足够的权限时加载该页面。

我总是采用第一种方法。它很容易实现,减少了许多令人头疼的问题,最重要的是,减少了用户的挫败感。这更像是一个用户界面问题,而不是一个编程问题。

问问自己,如果 amazon.com 网站上的管理员链接无处可去,那该有多烦人?

【讨论】:

  • 这不是我要问的。我知道要隐藏链接,但如果他们在 url 栏中键入一个仅限管理员的页面,我需要重定向到受限。我需要知道是否应该制作 4 个包含文件“superadmin.php”、“admin.php”、“mod.php”、“user.php”或 4 个子函数或其他任何东西
  • 好吧,我更详细地编辑了我的答案。当它提供很少或不提供有关所需内容的信息时,安全性总是更好,即不要告诉用户他们需要什么才能看到内容,只是告诉他们他们看不到它。一页,一个重定向。您也许可以重定向到登录页面,但这只有在他们根本没有登录时才有意义。即便如此,您也只需要一个登录页面。我不知道你为什么需要几个包含。提供尽可能少的细节。他们只需要知道他们无法访问内容。
  • 你还没有完全理解,但我想我可以包含一个“checklogin.php”,在我包含它之前,创建一个变量$accessrequired = 2?这是一个选择吗?
  • 当然,您基本上需要一个了解所需内容并针对所提供内容进行测试的函数。我在我的框架中这样做。我根据必要的级别检查当前用户,然后根据该级别继续或保释。在 OOP 上下文中,您将拥有一个可用的安全类,并调用一个方法,该方法接受两个参数,当前参数,必需参数,并采取行动或什么都不做(允许加载页面)。
猜你喜欢
  • 2016-10-18
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2011-01-02
  • 1970-01-01
  • 2019-07-18
相关资源
最近更新 更多