嗨我需要在测试阶段保护我的应用程序。
关于从Basic Auth
中排除一个网址,我读了这个post但我想排除2个网址:
/ API / *
/的OAuth / V2 /令牌
因此整个应用程序将受到保护,除了那两个将公开的网址。否则我无法访问我的api路线。
我现在的.htaccess是:
# Protect the app with password
AuthUserFile /home/master/public_html/web/.htpasswd
AuthName "Protected"
AuthType Basic
Require valid-user
所以我猜我应该需要某种类型或正则表达式:
SetEnvIf Request_URI ^/api/ noauth=1
我怎么能有OR条件?
答案 0 :(得分:3)
尝试:
SetEnvIf Request_URI ^/(api/|oauth/V2/token) noauth=1
您可以排除uris,只需使用 |
栏将它们分开答案 1 :(得分:1)
您可以将Require
包含在另一个指令中,例如Directory
或Location
<Location /api/>
Require all granted
</Location>
<Location /oauth/v2/token>
Require all granted
</Location>
没有问过,但是Getting it working说的是.htpasswd
此文件应放置在无法从网络访问的位置。这样人们就无法下载密码文件。
所以你不应该把.htpasswd放在public_html
里面。
答案 2 :(得分:1)
Apache 2.4 身份验证/访问控制自 2.2 以来已更改。 这是新语法:
AuthType Basic
AuthUserFile /home/master/public_html/web/.htpasswd
AuthName "Protected"
SetEnvIf Request_URI ^/(api/|oauth/V2/token) noauth=1
<RequireAny>
Require env noauth
Require env REDIRECT_noauth
Require valid-user
</RequireAny>