php - 我如何管理用户权限?

时间:2009-09-07 08:07:14

标签: php permissions

我如何管理用户权限? 我需要一种快速的方法来管理用户(对页面有误或不会对页面造成影响)?

2 个答案:

答案 0 :(得分:5)

您可能需要一个简单的解决方案,但这不是一个简单的问题。

在一端,您可以为每个用户拥有每个页面的个人权限。这给了你很大的灵活性,但这将是一场行政噩梦。在另一端,您可以授予用户访问或不访问整个站点的权限。不是很灵活,但很容易管理和编码。

第一种是细粒度的。第二种是粗粒度的。找到授权方案的重点是定义一个与需要一样精细或粗粒度的方法,以平衡灵活性和管理/开发。

您可能感兴趣的两种常见方案:

  1. 为每个用户提供数据库中的类型。当他们登录时,将该类型(例如用户,管理员,主持人)放入会话并在每个相关页面上检查;
  2. 为每个用户提供一个或多个角色(因此有人可以说是管理员和主持人,或者只是其中一个或两者都不是)。这需要一个单独的表(用户和用户用户),并在会话中放置一个数组来表示角色,但比(1)更灵活。基于角色的授权非常普遍。
  3. 这两者有许多不同的变化,也有很多替代品。可以组合各种方案。

    这就是为什么我的通用授权库不足之处,因为它们具有相当广泛的需求,足以涵盖大量用例,并且粗粒度足以对个人用户有用。

答案 1 :(得分:3)

实施ACL系统。

  • 一组用户组成一个角色
  • 用户可能属于多个角色
  • 权限在应用程序中定义 - 例如,创建用户,发布文章。等
  • 通过管理界面为角色添加权限
  • 在加载页面之前,请检查ACL。如果用户属于具有所请求页面所需权限的角色,则允许用户继续。否则重定向到访问被拒绝的页面。
  • 可以使用第三方库轻松实现,例如Zend_Acl

选择您习惯使用的库。但基本思想仍然相同。