代码之家  ›  专栏  ›  技术社区  ›  TigerTiger

使用.htaccess(和.htpasswd)身份验证时如何注销?[复制品]

  •  27
  • TigerTiger  · 技术社区  · 17 年前

    可能重复:
    HTTP authentication logout via PHP

    您好!

    我在我的网站上有一些功能受到保护,使用 .htaccess 和 .htpasswd . 当用户试图访问时,他们会得到输入详细信息的提示。他们输入他们的详细信息,进入并能看到东西等。一切都很好。

    我的问题是如何创建 logout 此类型身份验证的功能。我知道他们可以关闭浏览器窗口来“注销”。但这并不理想。你对我有什么建议?

    谢谢。

    4 回复  |  直到 9 年前
        1
  •  31
  •   Peter Parker    17 年前

    浏览器通常不支持此功能,请参见 How do I log out?

    自从浏览器首次启动以来 实现基本认证, 网站管理员希望 知道如何让用户注销。 因为浏览器缓存用户名 和带有身份验证的密码 领域,如本文前面所述 教程,这不是 服务器配置,但是 让浏览器进入 忘记凭证信息,所以 下一次资源是 请求,用户名和密码 必须再次提供。有 很多情况下 可取的,例如在使用 在公共位置浏览,而不是 希望保留浏览器日志 这样下一个人就可以 存入你的银行账户。

    然而,尽管这可能是 最常见问题 基本身份验证,到目前为止 主要的浏览器制造商 认为这是一个可取的特点 投入到他们的产品中。

    因此,这个问题的答案 问题是,你不能。对不起。

    有些浏览器扩展允许您清除站点的HTTP身份验证。 对于火狐 WebDeveloper 扩展(这是我最喜欢的扩展之一)提供了这个功能。 这个的菜单是 Miscellaneous/Clear Private Data/HTTP Authentication .

        2
  •  22
  •   wranvaud jerinisready    9 年前

    在Firefox和Chrome上测试 . 您可以将用户发送到 http://logout:logout@example.com . 这将用注销/注销(可能是任何无效的用户/密码组合)替换他们当前的用户名/密码,由于他们现在的用户名/密码错误,他们必须再次登录才能访问该网站。

    在Opera上,这不起作用,因为您可以同时拥有多个用户名/密码。它也不适用于IE,因为IE似乎不支持 http://username:password@example.com 网址。

        3
  •  2
  •   Grant Wagner    17 年前

    几年前我遇到了这个问题。发现每个人都有一个问题,而且似乎没有人愿意用一般的方法来解决,真是令人难以置信的沮丧。

    如在 Inadequate Logout functionality in HTTP Authentication 我认为答案是更改RFC以允许超时并支持注销按钮。作者关于服务器能够发送“注销”头的附加建议实际上消除了 任何 客户端用户代理支持,因为网站可以简单地在网页上包含指向URL的链接,该URL返回必要的响应代码和/或头,以使当前会话无效。

        4
  •  1
  •   nothrow    17 年前

    可以注销。您应该实现注销页面,它将返回HTTP401,直到用户输入错误的登录信息,然后重定向到其他地方。浏览器会记住接受的最新登录信息,因此会覆盖正确的登录。

    但这有点不可用,因为它需要用户的合作。