【发布时间】:2010-12-30 10:35:59
【问题描述】:
我最近在我的网站上添加了 OpenID 登录。但我不知道如何添加注销功能。
例如,单击“登录”按钮时,我可以显示所选 OpenID 提供商的登录表单,例如 Google 帐户。但是,我不知道如何实现退出按钮以退出 Google 帐户。
请指教。
【问题讨论】:
我最近在我的网站上添加了 OpenID 登录。但我不知道如何添加注销功能。
例如,单击“登录”按钮时,我可以显示所选 OpenID 提供商的登录表单,例如 Google 帐户。但是,我不知道如何实现退出按钮以退出 Google 帐户。
请指教。
【问题讨论】:
各个 OpenID 提供商提供不同的 URL 用于注销,用户可以重定向到这些 URL。
谷歌:https://www.google.com/accounts/Logout
雅虎:https://login.yahoo.com/config/login?logout=1
已经讨论过允许 OP 提供这些 URL 作为标准的一部分;请参阅 OpenID 邮件列表中的 this discussion。
【讨论】:
ajax 请求,注销就像一个魅力。我不知道它是否正确,但对于我们的敏捷过程来说,它是一个很好的解决方案:),使用 Iframe 可能会更好!!。
OpenID 依赖方无法将用户从 OP 中注销,只能实现本地注销。就像 RP 不能让用户登录到 OP 一样。
【讨论】:
我认为您正在混合范式(讨厌这个词,但现在想不出更好的词来使用)。您的登录链接将用户发送到他们的 OpenID 提供商进行身份验证,但重要的不是用户登录到他们的 Google 帐户,而是通过 OpenID 提供凭据登录到您的网站。用户很可能已经登录到他们的 OpenID 提供商;你不(不能)知道也不必关心。
同样,您网站上的注销链接应该只将用户从您的网站中注销,使他们恢复到与单击登录按钮之前相同的状态。用户可能已经退出了他们的 OpenID 提供者;你既不知道也不关心。这个网站就是一个很好的例子:)。
【讨论】:
只需销毁会话。
【讨论】:
您只能为 OpenID 实现本地注销。正如 Charles Duffy 所说,您始终可以使用特定的 url,但前提是用户使用的是您知道注销 url 的提供程序。如果您的用户在登出您的网站时发现他的所有 Google 帐户都已登出,那可能会令人沮丧。
查看问题的另一种方式是,您是否要确保登录您网站的人始终需要输入他的密码,而不是在他已经登录到 openid 提供程序时才登录。
如果他们从公共终端使用它(恕我直言),它会提供更好的安全性。这将确保登录的用户始终需要重新验证他的密码。
要做到这一点实际上很简单,只需使用 PAPE 扩展
openid.ns.pape = "http://specs.openid.net/extensions/pape/1.0"。
openid.pape.max_auth_age = 0
在您登录 OpenID 提供商时作为 URL 的一部分。
更多信息在这里http://code.google.com/apis/accounts/docs/OpenID.html
【讨论】:
以下是我可以从 Google 注销的一个技巧:
<iframe id="myIFrame" src="" style='display:none;' >
function logOutGoogle(){
document.getElementById('myIFrame').src='https://www.google.com/accounts/Logout';
timeOut();
}
【讨论】:
我正在做我的项目并陷入注销问题 我不知道怎么像你那样做 我已经通过重置所有cookie来解决 因为我不知道设置登录状态的 cookie 我需要知道它。
【讨论】:
你必须在openid提供者成功验证后创建了一些会话变量,你只需要销毁这些会话变量。您不能销毁由 openid 提供程序创建的会话。
【讨论】:
这是退出 Google 和您的 RP 的可靠解决方案。
只需调用这个 URI
它将退出谷歌并重定向回您的应用程序。谢谢!
很快我将发布我的 windows live 和 facebook.com STS 的注销解决方案。
【讨论】: