29

可能重复:
通过 PHP 的 HTTP 身份验证注销

你好

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

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

谢谢。

4

4 回答 4

32

浏览器通常不支持此功能,请参阅如何注销?

自从浏览器首次开始实施基本身份验证以来,网站管理员就想知道如何让用户退出。由于浏览器缓存了用户名和密码,如本教程前面所述,这不是服务器配置的功能,而是让浏览器忘记凭据信息的问题,以便下次请求资源时,必须再次提供用户名和密码。在许多情况下这是可取的,例如在公共场所使用浏览器时,不想让浏览器保持登录状态,以便下一个人可以进入您的银行帐户。

然而,尽管这可能是关于基本身份验证的最常见问题,但到目前为止,还没有一家主要的浏览器制造商认为这是他们产品中的理想功能。

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

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

于 2009-07-22T08:35:57.737 回答
30

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

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

于 2009-07-22T08:38:55.733 回答
2

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

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

于 2009-07-22T16:27:11.447 回答
1

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

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

于 2009-07-22T09:40:04.517 回答