我已经设置了用户和组的基本身份验证
AuthType Basic
AuthName "GSD Dev Area"
AuthUserFile /coding/conf/passwords/gsdesign/htpasswd
AuthGroupFile /coding/conf/passwords/gsdesign/groups
Require valid-user
现在我想保护一个文件夹,只允许某个组访问
require group myGroup
并且它可以正常工作,但是有一个问题。如果我不授予该文件夹的访问权限,我会再次出现登录窗口,我想通过禁止访问。我该怎么做?
多谢。
后期编辑 我已经使用有效的用户名登录,但是当我访问具有我不属于的需要组的区域时,我希望获得拒绝身份验证而不是登录框。
答案1
这样做是完全有可能的,但这需要您为 Apache 编写自定义处理程序。您可以使用 C、Perl 或 Python 或任何其他绑定为 Apache 处理程序 API 编写此处理程序。
HTTP 身份验证的标准行为是,对于没有任何身份验证信息的请求和不正确的详细信息,都返回 401 AuthenticationRequired 响应。浏览器在收到 401 响应时将显示登录对话框。对于没有身份验证信息的请求,您必须使用 401 AuthenticationRequired 响应进行响应,对于任何不正确的身份验证,您必须使用 403 Forbidden 响应进行响应。这应该可以解决您的问题。
答案2
我不确定我是否理解了这个问题,但我认为您的意思是当您提供无效的用户名/密码组合时,浏览器会再次弹出窗口,而不是显示“拒绝访问”。这是浏览器的一个功能——它会提示您输入凭据,直到您输入正确,或者单击“取消”(此时您确实会看到拒绝访问的页面)。据我所知,改变这种情况的唯一可靠方法是自己进行身份验证,而不是使用 AuthType Basic。
顺便一提,绝不,绝不使用 AuthType Basic 保护您关心的任何内容,除非您的页面通过 https 提供。AuthType Basic 以纯文本形式发送凭据,因此您需要 SSL 层为您加密。