我正在开发一个具有两个身份验证级别的简单网站:查看者和管理员。查看者可以访问的所有内容也应该可供管理员访问,但反过来不行。我使用的是 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
但是,您需要修改示例以满足您的需要。