8

是否有办法将一个人的 .htaccess 文件设置为每次都提示进行身份验证?示例:我打开一个浏览器选项卡,转到受密码保护的 url,系统提示我输入密码。关闭选项卡(主浏览器仍然打开)并重复上述操作并再次提示输入密码。除非我关闭浏览器,否则不会发生这种情况。也许这是一个缓存的东西?

这是我到目前为止所拥有的:

AuthType Basic
AuthName "myName"
AuthUserFile "/home/myDir/.htpasswds/public_html/myName/passwd"
require valid-user

提前致谢。

4

1 回答 1

7

实际上它是这样工作的(简化):

  • 浏览器在没有凭据的情况下向您的服务器发送请求
  • Apache 响应 403 错误,因为指定了“需要有效用户”
  • 浏览器提示输入用户名和密码
  • 浏览器再次发送请求,这次提供了凭据
  • Apache 根据 AuthUserFile 验证凭据并相应地设置“有效用户”
  • 如果一切正常 - 输出带有 200 状态码的数据
  • 接收 200 个代码缓存的浏览器使用相关域的凭据,直到浏览器会话到期

如您所见 - 问题在于浏览器。您不能强制浏览器忘记它用于域的密码。通常您不希望 - 例如,如果受密码保护的页面包含图像 - 浏览器将要求每个下载的图像的用户名和密码。

但是,您可以尝试一些技巧:

  • 您可以编写自己的 Apache 授权处理程序,该处理程序仅在用户第二次访问页面时对其进行授权;但真的很难做到
  • 您可以使用某种基于表单的身份验证(在 php 或 asp.net 等脚本中),而不是依赖于 http 身份验证;这种方式相当灵活
  • 您可以做一个技巧,每次访问受保护的页面时,某种脚本都会更改passwd文件中的密码;然后为每个用户提供两个密码并在每个请求上切换它们;这样浏览器总是记住“错误”的密码;看起来很疯狂,但这是我能想到的最简单的解决方案:-)
于 2012-07-26T14:17:45.640 回答