【问题标题】:PHP and htpasswdPHP 和 htpasswd
【发布时间】:2009-04-03 05:36:58
【问题描述】:

我有这样的结构:

/home
/home/dir1
/home/dir2

现在当有人去 /home 时,他被要求输入用户名和密码(在一个表单中),我在 PHP 中为 /home 的剩余文件设置会话信息。现在 /home/dir1 和 /home/dir2 受 htpasswd 保护,但用户名和密码相同。我不希望用户在转到 /home/dir1 时再次重新输入他们的用户名和密码......此外,当我从 /home 注销时,我也想从 /home/dir1 注销。您能否就如何实现这一目标提出建议?

【问题讨论】:

  • 您需要使用相同的身份验证域(不确定这是否是正确的名称)。检查 Apache 文档。但这不是编程问题。

标签: php .htaccess .htpasswd


【解决方案1】:

这应该是默认行为。

也就是说,如果您使用 Apache 和 .htaccess 文件来设置 HTTP 身份验证,则您应用于目录的任何规则也将应用于其子目录,并且浏览器会将其视为一次登录。

如果您希望它以不同的方式运行,即如果您希望站点的某些部分被视为需要完全独立的登录,您可以使用 .htaccess 中的 AuthName 指令为每个部分指定一个“领域”。 More information here。但是,如果您不这样做,它将始终被视为同一登录的所有部分。

关于 HTTP 身份验证的事情是没有办法“注销”,至少除非浏览器提供该功能,否则不会。大多数浏览器允许您注销的唯一方法是结束浏览器会话(即关闭浏览器)。是的,一旦执行此操作,您将退出 /home、/home/dir1、/home/dir2 以及所有站点/领域上的所有目录。

【讨论】:

    【解决方案2】:

    在 Apache 中,只要两个文件夹具有相同的 AuthName 并且位于同一站点上,它们就应该共享密码。

    两个目录可能都有一个像这样的 .htaccess 文件:

    AuthName "My Protect Folder"
    AuthType basic
    AuthUserFile /somewhere/htusers
    require valid-user
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多