我想要允许基本身份validation,但不要求它。 所有的访问者 – 不pipe是否authentication – 都应该能够访问一个页面(脚本),脚本可以为有效用户添加特殊function。 因此,首先尝试基本身份validation,如果失败,则允许访问。 脚本将决定下一步该做什么。 我宁愿不要在脚本中进行整个身份validation,而是让apache进行身份validation,并将用户名(如果有的话)传递给脚本。
我实际上是在创build一个SOAP服务,而不是一个网站,但是你可能会想象一种情况,你可以访问一个网站的主页,而不用提示input用户名/密码,然后访问一个只激活http-authentication。 重新访问主页现在可以导致个性化的主页。
我一直在捣鼓.htaccess文件,并得到了这么多:
AuthType Basic AuthName "Beveiligde website" AuthUserFile .htpasswd require valid-user Order allow,deny Allow from All satisfy any
这确实允许所有,但是不幸的是不会先尝试身份validation(至less不是我能看到的。)PHP中的环境variablesAUTH_TYPE是空的,即使使用了有效的凭据。
这种方式还可以结合吗? 我可以想象,只有在允许/拒绝规则导致拒绝的情况下,apache才会尝试基本身份validation。 有没有办法强制基本身份validation呢? 还是我用这个方法呢?
你需要棘手:)为了让服务器要求authentication,你需要一个有效的用户。 但是,这可能会进入一个位置块。 所以我想,你可以将该位置别名(或redirect)到正常位置。 我认为这样的事情会起作用:
<location "/try-auth-first"> require valid-user satisfy all alias /try-auth-first /the-real-one #redirect /try-auth-first /the/real/one </location>
您可能需要一点点,但类似的东西应该工作。 如果身份validation失败,您的脚本可以获取401结果,然后直接重试到真实位置(需要设置为允许所有位置)。
顺序否认,允许也许是解决scheme。
Order deny,allow Deny from all
我不检查。