private static void SignOutAndReturnSuccessResponse(HttpContext context) { FormsAuthentication.SignOut(); string type; byte[] content; WindowsLiveLogin.GetClearCookieResponse(out type, out content); context.Response.ContentType = type; context.Response.OutputStream.Write(content, 0, content.Length); context.Response.End(); }
private void DoValidation() { string action = Request.QueryString.Get("action"); if (WebConfigSettings.DebugWindowsLive) { log.Info("action was " + action); } /* * If action is 'logout', clear the login cookie and redirect * to the logout page. * * If action is 'clearcookie', clear the login cookie and * return a GIF as response to signify success. * * By default, try to process a login. If login was * successful, cache the user token in a cookie and redirect * If login failed, clear the cookie and redirect */ if (action == "logout") { CookieHelper.ExpireCookie(winliveCookieName); WebUtils.SetupRedirect(this, siteRoot + "/Logoff.aspx"); return; } else if (action == "delauth") { HandleConsent(); return; } else if (action == "clearcookie") { CookieHelper.ExpireCookie(winliveCookieName); string type; byte[] content; windowsLive.GetClearCookieResponse(out type, out content); Response.ContentType = type; Response.OutputStream.Write(content, 0, content.Length); Response.End(); } else { // action is login user = windowsLive.ProcessLogin(Request.Form); Guid userGuid = Guid.Empty; if (user != null) { // auth succeeded see if its a current mojo user or not // emtpy guid means new user userGuid = SiteUser.GetUserGuidFromWindowsLiveId( siteSettings.SiteId, user.Id); persistCookie = user.UsePersistentCookie; CookieHelper.SetCookie(winliveCookieName, user.Token, user.UsePersistentCookie); } else { // auth failed so clear the cookie CookieHelper.ExpireCookie(winliveCookieName); } if (user != null) { if (userGuid == Guid.Empty) { // WindowsLiveID Authentication succeeded // no mojo user found so send to Register //WebUtils.SetupRedirect(this, "RegisterWithWindowsLiveID.aspx"); if (siteSettings.AllowNewRegistration) { WebUtils.SetupRedirect(this, siteRoot + "/Secure/RegisterWithWindowsLiveID.aspx"); return; } WebUtils.SetupRedirect(this, siteRoot); return; } else { // TODO: use return url cookie if normal login //WebUtils.SetupRedirect( // this, // SiteUtils.GetNavigationSiteRoot()); DoExistingUserLogic(userGuid); return; } } else { // WindowsLiveID Authentication failed //WebUtils.SetupRedirect( // this, // LoginPage); Response.Redirect(LoginPage); return; } } }