【问题标题】:php - How can i manage users permission?php - 我如何管理用户权限?
【发布时间】:2009-09-07 08:07:14
【问题描述】:

如何管理用户权限? 我需要一种快速的方法来管理用户(访问页面或不访问页面)当他们登录?

【问题讨论】:

  • 用户登录时你会存储哪些信息?

标签: php permissions


【解决方案1】:

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

一方面,您可以为每个用户的每个页面拥有单独的权限。这为您提供了很大的灵活性,但这将是一场管理噩梦。在另一端,您可以让用户访问或不让用户访问整个站点。不是很灵活,但很容易管理和编码。

第一个是细粒度的。二是粗粒度。寻找授权方案的全部意义在于定义一个您需要细粒度或粗粒度的授权方案,以平衡灵活性和管理/开发。

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

  1. 在数据库中给每个用户一个类型。当他们登录时,在会话中输入该类型(例如用户、管理员、版主)并在每个相关页面上进行检查;
  2. 为每个用户分配一个或多个角色(例如,某人可以既是管理员又是版主,或者只是其中之一,或者两者都不是)。这需要一个单独的表(用户和用户角色),并可能在会话中放置一个数组来指示角色,但比(1)更灵活。基于角色的授权非常常见。

这两个有很多很多的变体,也有同样多的选择。可以组合多种方案。

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

【讨论】:

    【解决方案2】:

    实施 ACL 系统。

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

    选择您喜欢使用的库。但基本思想保持不变。

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2012-02-07
      • 2014-03-30
      • 2014-01-09
      • 1970-01-01
      相关资源
      最近更新 更多