Apache身份验证:可靠地重定向失败?

buk*_*zor 8 apache redirect http basic-authentication

我已将ErrorDocument 401设置为指向我网站的帐户创建页面,但并非所有浏览器都支持此重定向(Safari).

此外,其他浏览器(Firefox,Chrome)永远不会要求输入密码并显示ErrorDocument.这会导致大量用户在多次尝试密码后放弃尝试,而无需查看帐户创建页面.

有没有办法让重定向更可靠,而不会完全破坏基本身份验证?

Bor*_*ris 16

您的问题的简单答案是否定的,如果不实施自定义身份验证,则无法使其更加可靠.

Firefox和Chrome将显示您在ErrorDocument 401指令中指定的页面的唯一方法是单击取消按钮.此外,401 HTTP代码没有发送重定向; 相反,它是使用ErrorDocument 401指令指定的文档的内容.您可以使用HTML元标记进行重定向:

<Location "/protected">
    AuthUserFile /path/to/users
    AuthName "This is protected area"
    AuthGroupFile /dev/null
    AuthType Basic
    Require valid-user

    #ErrorDocument 401 /register.html
    ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=/register.html\"></html>"
</Location>
Run Code Online (Sandbox Code Playgroud)

您的问题的可能解决方案是创建自定义基本HTTP身份验证模块或使用支持基本HTTP身份验证挂钩的php之类的语言

http://php.net/manual/en/features.http-auth.php

  • [`mod_auth_form`](http://httpd.apache.org/docs/trunk/mod/mod_auth_form.html)出现在Apache 2.4中.这使得以标准Apache方式配置它变得更容易.需要`form_handler`(在某种语言中)才能使表单实际处理登录. (2认同)