我们是一个MVC4应用程序。 我们是OAuth& Formsauthentication允许登录google,facebook&鸣叫声。
我第一次使用google登录时.. 我被重定向到谷歌页面,我提供了它记录我的凭据,这一切都很好。
注销后重新登录,我可以自动登录。 我认为虽然我已经在注销时清除了它们,但浏览器中的cookie并未清除。
public ActionResult LogOff()
{
//Clears out Session
Response.Cookies.Clear();
//Signs out of WebSecurity and FormsAuthentication
WebSecurity.Logout();
FormsAuthentication.SignOut();
// clear authentication cookie
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie1);
Session.Clear();
Session.Abandon();
return RedirectToAction(AXN_DFLT, CNTLR_DFLT);
}
注销后,我应该在重新登录时再次重定向到谷歌页面。 但它没有发生。 有人请指教?
这里有同样的问题:ASPXAUTH Session invalidate on logout with OAUTH
但没有答案!!
答案 0 :(得分:2)
情况是您既没有登录您的网站,也没有登录您的Google帐户。
到目前为止,您的浏览器拥有一个Cookie ... Google的一个
4.您被重定向回您的网站:您的网站注意到Google发布的访问令牌(不是cookie),然后您的网站将发布自己的cookie,这与Google的一个无关
到目前为止,您已使用Google和您的网站登录,这意味着您的浏览器拥有2个有效的Cookie(Google和您的网站)
5.接下来,您退出网站:此操作会破坏与您的网站相关的任何会话(包括您网站的Cookie)。请注意,Google的Cookie仍然有效,事实上,如果您转到gmail,youtube或任何其他Google服务,您将完全绕过身份验证,因为您尚未从Google退出...仅限于您的网站。
6.然后您点击“使用Google登录”按钮重新登录您的网站:此操作会将您带到Google,但是,由于Google检测到您已经过身份验证(已登录),因此不需要要重新验证您,它已经知道您是谁并且没有提示登录对话框,而是将您重定向回您的网站,发布一个全新的访问令牌。
基本上,如果您已登录
,则无需再次使用Google登录希望它有意义