如何使用php从apache2获取当前经过身份验证的用户/组


How to get current authenticated user/group from apache2 with php

我有一个security.conf文件,要求用户在访问我的网站时登录。现在,我希望php页面只显示指向我的.htgroup文件中admins组中用户的某些链接。因此,问题是如何获得由apache验证的用户所在的组,以便在我的php脚本中使用。

我的.htgroup文件如下admins:user1 user2users:user1 user2 user3 user4 user5…

因此用户可能是多个组的一部分,因为对于网站的某些部分,我只要求该人是用户。网站的其他部分我要求他/她是一名管理员,对于某些部分,我需要一个特定的用户。

如果你有任何想法,我将非常感谢。

谢谢,Tom

$_SERVER['REMOTE_USER']将包含Apache身份验证的用户名。

您可以解析.htgroup文件以确定对应的组,或者连接到(并查询)组信息的原始源。据我所知,它还没有从Apache转移到PHP。

或者你可以试试这个

  if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
     $authFile = file("./password.txt");
     foreach ($authFile as $login) {
         list($username, $password) = explode(":", $login);
         $password = trim($password);
         if (($username == $_SERVER['PHP_AUTH_USER']) && ($password == md5($_SERVER['PHP_AUTH_PW']))) {
            $authorized = TRUE;
            break;
         }
      }
   }
   // If not authorized, display authentication prompt or 401 error
   if (! $authorized) {
      header('WWW-Authenticate: Basic Realm="Secret Stash"');
      header('HTTP/1.0 401 Unauthorized');
      print('You must provide the proper credentials!');
      exit;
   }