我最近在我的网站上添加了 OpenID 登录。但我不知道如何添加注销功能。
例如,单击登录按钮时,我可以显示所选 OpenID 提供商的登录表单,例如 Google 帐户。但是,我不知道如何实现退出按钮来退出 Google 帐户。
请指教。
各个 OpenID 提供者提供不同的用于注销的 URL,用户可以重定向到这些 URL。
谷歌:https ://www.google.com/accounts/Logout
雅虎:https ://login.yahoo.com/config/login?logout=1
已经讨论过允许 OP 提供这些 URL 作为标准的一部分;请参阅OpenID 邮件列表上的讨论。
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 的注销解决方案。