MYSQL PHP用户权限

时间:2011-12-14 18:33:49

标签: php mysql

我正在为我们公司制作后端。我想基本上有3个用户组... ADMIN也可以访问所有功能,MANAGERS可以访问除ADMIN任务以外的所有功能,而USER具有最有限的功能......

我正在研究MySQL如何处理用户,并且是一个非常好的系统,但在编写类似的东西时似乎有相当多的开销。

我想知道是否有其他人有建议。我想让团队管理充满活力,但我想知道它是否值得,因为我们是一家小公司..

基本上我会建立一个看起来像这样的桌子(裸露在我这是一个粗略的模拟......)。假设GroupID 1是ADMIN,GroupID 2是User:

PRIVILEGE     GroupID    Grant
USER_ADD      1          "Y"
USER_ADD      2          "N"
EDIT_LISTING  1          "Y"
EDIT_LISTING  2          "Y"

依旧...... 以下是我正在考虑的3个选项:

  1. 构建用户登录的用户类,实例化类并设置属性。我不喜欢这个,因为每次用户移动时都必须创建一个新实例
  2. 将查询结果(SELECT * FROM priveleges WHERE GroupID =:userGroup)保存到全局数组
  3. 保留$ _SESSION变量中的值。这是否足够安全?
  4. 如果有人有任何意见或其他想法,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

我不会尝试重新发明轮子(除非你想从中学习)。您是否看过Zend Framework,它附带了自己的AuthenticationAuthorization - 模块?

答案 1 :(得分:0)

这就是我喜欢处理这种情况的方法。

  1. 创建一个包含所有用户信息(包括权限/组
  2. )的用户类
  3. 当用户登录时,将其用户对象保存为会话变量,并在整个站点中引用该会话变量。
  4. 创建您的网页,使其仅显示当前用户的权限级别允许的选项/功能。
  5. 例如:

    <?php
        $Me = new User(user parameters);
        $_SESSION['currentUser'] = $Me;
    
        ...
    
        if($_SESSION['currentUser']->GetValue(Permission) == 'Admin')
        {
            echo 'You're an admin';
        }
    ?>
    

    这样,除非他们更改/更新他们的信息,否则您只进行一次用户查询。您也不必执行与权限相关的查询,从而节省服务器开销和时间。