【问题标题】:How to logout when using .htaccess (and .htpasswd) authentication? [duplicate]使用 .htaccess(和 .htpasswd)身份验证时如何注销? [复制]
【发布时间】:2010-11-12 22:15:35
【问题描述】:

可能重复:
HTTP authentication logout via PHP

我的网站上有一些使用.htaccess.htpasswd 保护的功能。 当用户尝试访问它时,他们会得到提示输入详细信息。他们输入他们的详细信息并进入并可以看到东西等。一切正常。

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

谢谢。

【问题讨论】:

标签: php authentication .htaccess logout .htpasswd


【解决方案1】:

浏览器通常不支持这个,见How do I log out?

自从浏览器首次启动以来 实现基本身份验证, 网站管理员想要 知道如何让用户退出。 由于浏览器缓存了用户名 和密码与认证 领域,如本文前面所述 教程,这不是 服务器配置,但是是 让浏览器访问的问题 忘记凭证信息,所以 下次资源是 请求,用户名和密码 必须再次提供。有 许多情况下,这是 可取的,例如当使用 浏览器在公共场所,而不是 希望记录浏览器 in,以便下一个人可以得到 存入您的银行帐户。

然而,虽然这可能是 最常见的问题 基本身份验证,到目前为止还没有 各大浏览器厂商都有 认为这是一个理想的功能 放入他们的产品中。

因此,这个问题的答案 问题是,你不能。抱歉。

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

【讨论】:

  • Firefox 退出 HTTP 身份验证的默认方式在“工具”>“清除最近历史记录...”下可用,如复选框“活动登录”。这既不直观,也不允许您仅退出一个域,您总是退出每个页面。
【解决方案2】:

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

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

【讨论】:

  • 根据 RFC 3986(URI:通用语法)第 3.2.1 节。 (用户信息)不推荐使用user:password@host。在大多数情况下,仅使用 http://logout@yourserver.example.com/ 是不可行的。
  • 今天在 chrome 中对我有用,很棒的东西,谢谢大家!
  • 我确认这也适用于 Chrome,非常感谢!
  • 在 Chrome 45 上,注销并再次登录后,总是弹出提示...
  • 请注意,此解决方案不一定是面向未来的。浏览器可以 - 在任何时候 - 决定开始支持多个活动登录或打破这一点的其他一些功能。
【解决方案3】:

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

但这有点不实用,需要用户配合。

【讨论】:

    【解决方案4】:

    几年前我遇到了这个问题。发现每个人都遇到问题而似乎没有人想以通用方式解决问题,这令人难以置信的沮丧。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-01
      • 2016-07-08
      • 2018-02-10
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 2015-05-25
      • 2019-09-29
      相关资源
      最近更新 更多