Apache:使用基本身份验证和多个帐户

Apache:使用基本身份验证和多个帐户

我正在开发一个具有两个身份验证级别的简单网站:查看者和管理员。查看者可以访问的所有内容也应该可供管理员访问,但反过来不行。我使用的是 apache 基本身份验证。

文件夹结构基本上是:

/var/www/html/ <-- 可供世界查看
/var/www/html/viewer
/var/www/html/admin

当我访问 /admin 中的内容时,浏览器会按预期要求输入凭据。但是,如果我随后立即访问 /viewer,浏览器再次要求输入凭证。我已经提供了管理员凭证,因此很不方便。

站点配置文件和组文件的相关部分如下。我该如何重新设计它或站点文件夹结构以消除这种烦恼?

.htgroup文件:

Viewers: viewer admin
Administrators:  admin

站点文件:

<Directory "/var/www/html/viewer">
           AuthType Basic
           AuthName "Please enter Viewer username and password:"
           AuthBasicProvider file
           AuthUserFile /etc/apache2/.htpasswd
           AuthGroupFile /etc/apache2/.htgroup
           Require group Viewers Administrators
</Directory>

<Directory "/var/www/html/admin">
           AuthType Basic
           AuthName "Please enter Admin username and password:"
           AuthBasicProvider file
           AuthUserFile /etc/apache2/.htpasswd
           AuthGroupFile /etc/apache2/.htgroup
           Require group Administrators
</Directory>

答案1

您可以使用组来实现。使用AuthGroupFile指定包含组名和属于该组的用户的文件。示例:

GroupName: rbowen dpitts sungo rshersey

然后,您可以例如将“admin”添加到两个组,将“viewer”添加到一个组(或按照您的喜好添加)。这样,“admin”就比“viewer”拥有更多权限。

.htaccess 示例:

AuthType Basic
AuthName "By Invitation Only"
# Optional line:
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
AuthGroupFile "/usr/local/apache/passwd/groups"
Require group GroupName

将 设置AuthGroupFile为指向您创建的组文件,它应该可以工作。这些指令在<Directory>部分中也有效。

示例来自: https://httpd.apache.org/docs/2.4/howto/auth.html#lettingmorethanonepersonin

但是,您需要修改示例以满足您的需要。

相关内容