1
152
基本身份验证不是为管理注销而设计的。你可以这样做,但不是完全自动的。 你要做的是让用户点击一个注销链接,并发送一个“401未经授权”的响应,使用相同的领域和相同的URL文件夹级别作为正常401发送请求登录。 他们必须被引导到下一步输入错误的凭证,例如空白的用户名和密码,并且作为响应,您将返回一个“您已成功注销”页面。错误/空白凭据将覆盖以前的正确凭据。 简而言之,注销脚本反转了登录脚本的逻辑,仅当用户 不是 通过正确的证书。 问题是有点好奇的“不要输入密码”密码框是否能满足用户的接受。试图自动填充密码的密码管理器也会妨碍您的工作。 编辑以添加对注释的响应:重新登录是一个稍微不同的问题(除非您明显需要两步注销/登录)。您必须拒绝(401)第一次尝试访问重新登录链接,而不是接受第二次尝试(可能具有不同的用户名/密码)。有几种方法可以做到这一点。一种方法是在注销链接中包含当前用户名(例如/relogin?用户名),并在凭据与用户名匹配时拒绝。 |
2
185
在Bobince的回答之外… 使用Ajax,您可以将“注销”链接/按钮连接到一个javascript函数。让此函数使用错误的用户名和密码发送xmlhttprequest。这应该是401。然后将document.location设置回预登录页面。这样,用户在注销时就不会看到额外的登录对话框,也不必记住输入错误的凭证。 |
3
171
让用户点击链接 https://log:out@example.com/ . 这将用无效的凭证覆盖现有的凭证;注销它们。 |
4
60
您完全可以用javascript来完成: IE有(很长一段时间)用于清除基本身份验证缓存的标准API:
应该在工作时返回true。在其他浏览器上返回“假”、“未定义”或“放大”。
新浏览器(截至2012年12月:Chrome、Firefox、Safari)具有“魔力”行为。如果他们看到
成功的
使用任何伪造的其他用户名的基本身份验证请求(例如
其基本示例是:
执行上述操作的“异步”方法是使用
你也可以把它变成书签:
|
5
15
以下功能已确认适用于Firefox 40、Chrome 44、Opera 31和IE 11。
|
6
10
这在基本身份验证中不能直接实现。 在HTTP规范中,没有任何机制可以让服务器告诉浏览器停止发送用户已经提供的凭证。 有一些“黑客”(参见其他答案),通常涉及使用xmlhttprequest发送一个带有错误凭证的HTTP请求,以覆盖最初提供的请求。 |
7
9
下面是一个使用jquery的非常简单的javascript示例:
此登录用户不显示浏览器登录框而退出,然后将其重定向到 注销 页 |
8
6
|
9
5
这适用于IE/Netscape/Chrome:
|
10
2
|
11
2
|
12
1
将此添加到应用程序:
|
13
1
您所需要的只是在一些注销URL上重定向用户并返回
nginx示例:
错误页面
|
14
1
根据我在上面读到的内容,我得到了一个简单的解决方案,可以在任何浏览器上使用: 1)在您的注销页面上,您调用一个Ajax到您的登录后端。您的登录后端必须接受注销用户。一旦后端接受,浏览器将清除当前用户并假定为“注销”用户。
2)现在,当用户返回到正常索引文件时,它将尝试使用用户“注销”在系统中自动输入,第二次必须使用401回复阻止它,以调用登录/密码对话框。 3)有很多方法可以做到这一点,我创建了两个登录后端,一个接受注销用户,另一个不接受。我的正常登录页面使用不接受的页面,我的注销页面使用接受它的页面。 |
15
0
|
16
0
此javascript必须适用于所有最新版本的浏览器:
|
17
0
我更新了Mthoring的现代铬合金版解决方案:
|
18
0
我试着用下面的方法来使用上面的内容。
但它只会将你重定向到新的位置。没有注销。 |
drewrockshard · 将密码与本地文件名匹配 6 年前 |
Bassie · 我的凭据存储在哪里? 6 年前 |
Marc · getAuthEntity失败“无法匹配预期类型” 6 年前 |