Exemple #1
0
        public ActionResult LoginOut()
        {
            var callBackUrl = RequestUtils.GetString("CallBackUrl");

            _logger.InfoFormat(callBackUrl);
            //先获取是否有包含TGC
            var account = _ticketGrantingManager.GetTicketGranting();

            if (account != null)
            {
                _logger.InfoFormat("Id:{0},code:{1}", account.AccountId, account.Code);
                //移除TGC
                _ticketGrantingManager.RemoveTicketGranting();
                var webApps = _webAppManager.GetAllWebApps();
                //var key = "";
                //异步调用,通知客户端退出
                Task.Factory.StartNew(() =>
                {
                    foreach (var webApp in webApps)
                    {
                        SimulatRequest.Instance(UrlUtils.GetClientNotifyUrl(webApp), "Post")
                        .AddParam("AccountCode", EncryptUtils.EncryptAccountCode(account.Code))
                        .BeginRequestAsync();
                    }
                });
            }
            //根据CallBack地址 先拿到请求是属于哪一个客户端
            var webAppInfo = _webAppManager.GetWebAppInfoByUrl(callBackUrl);

            CookieUtils.ClearCookie();
            if (webAppInfo != null)
            {
                return(Redirect(UrlUtils.GetClientNotifyUrl(webAppInfo)));
            }
            return(Redirect(callBackUrl));
        }