除localhost之外的Apache身份验证

Mar*_*tin 18 apache authentication

我需要在公共使用网站时应用HTTP auth,但我不在我的localhost上应用它.这是.htaccess我认为应该工作的.但它不起作用 - 它仍然要求我用户/通行证.
我究竟做错了什么?

SetEnvIf Remote_Addr ^127\.0\.0\.1$ develmode
<IfDefine !develmode>
    AuthType Basic
    AuthName "ADMIN"
    AuthUserFile /path/to/.htpasswd
    Require valid-user
</IfDefine>
Run Code Online (Sandbox Code Playgroud)

mod_setenvif 当然是启用的.

Mar*_*555 27

您需要查看ordersatisfy关键字.我网站上的工作示例如下.首先,我们告诉我们接受IP或USER.然后我们定义htpasswd文件路径,并接受该文件中的任何有效用户.最后,我们定义哪些客户端IP地址可以访问我们的网站而不使用auth(我们拒绝所有其他IP,因此他们必须通过htpasswd进行身份验证).

# permit by USER || IP
Satisfy any
# USER
AuthUserFile /var/www/munin/.htpasswd
AuthGroupFile /dev/null
AuthName "Password Protected Area"
AuthType Basic
require valid-user
# IP
order deny,allow
deny from all
allow from 11.22.33.


Fab*_*ler 20

Apache 2.4allow,deny并且satisfy不再使用,require现在也完成IP地址限制:

AuthUserFile /path/to/.htpasswd
AuthName "Restricted Access"
AuthType Basic
Require ip 127.0.0.1
Require valid-user
Run Code Online (Sandbox Code Playgroud)

如果满足任何"Require"指令,则允许该请求.如果您想要两者,请将它们<RequireAll>分组.

对于本地访问的限制,您可以使用特殊语法Require local而不是Require ip 127.0.0.1

阅读更多: http ://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require