2013-03-15 48 views
0

我正在使用MVC4 c#併合並了本地安全令牌服務(STS)。用戶調用實際的網址,並被動地重定向到STS登錄。當他們成功通過身份驗證後,他們會被重定向到他們應該去的地方,這些都是在重定向到sts的URL中被urlencoded。使用MVC4的移動設備上的STS FederatedPassiveSignout C#

,退出時,我們稱之爲:

this.Session.Abandon(); 
this.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
this.Response.ClearContent(); 

// expires the claims 
FederatedAuthentication.SessionAuthenticationModule.SignOut(); 
FederatedAuthentication.SessionAuthenticationModule.CookieHandler.Delete(); 
WSFederationAuthenticationModule authModule = FederatedAuthentication.WSFederationAuthenticationModule 
Response.Redirect(WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(authModule.Issuer, authModule.Realm, null)); 

似乎一切都在我們的應用程序的桌面版本工作的偉大。用戶回到STS登錄頁面,URL顯示wlogin1(以及其他許多東西),並允許用戶再次登錄而沒有問題。該網址與首次重定向至STS時的網址完全相同。完美,這就是我想要的。

現在,當使用完全相同的域/控制器/方法的移動設備上,它只使用jQueryMobile和不同的局部視圖,註銷似乎工作,用戶被帶回到STS登錄。然而,這一次URL只顯示了用於註銷的移動actionLink實際調用的域/控制器/方法。當用戶嘗試再次登錄時,登錄始終不成功,因爲此鏈接不適用於sts登錄。

有關如何解決這個問題的想法,或者有什麼問題?如果您需要澄清,請告訴我。謝謝!

+0

似乎還有更多,因爲當我點擊上面在全新瀏覽器中提到的註銷鏈接(不是新選項卡,而是全新的實例)時,我會很好地重定向到STS。也許這與殺死會話有關? – RichieMN 2013-03-16 23:58:15

+0

此外,當在瀏覽器的標籤內登錄時,如果我在我們的受STS保護的網站輸入有效的網址,似乎所有標籤都有權訪問。GMAIL的工作方式與此類似,但對於是否有辦法將驗證安全保護到瀏覽器的特定選項卡與整個瀏覽器,感到好奇?謝謝! – RichieMN 2013-03-17 00:01:02

回答

0

我能解決這個問題!

看看它顯示的移動網站的標題: X-Requested-With:XMLHttpRequest 所以,我的註銷嘗試與Ajax和東西不工作。這是桌面和移動頭之間的唯一區別(顯然,除了用戶代理之外)。開始探討這個問題。

在我的一個移動特定的腳本中,我在mobileinit中添加了以下內容。答對了!哇,這種混亂問題是一個簡單的解決方案。

$(document).bind("mobileinit", function (event) {    
    $.mobile.ajaxEnabled = false;}); 

請確保您正確加載您的庫! 我已加載我的jQuery庫順序如下:

  1. jQuery的
  2. 移動jQuery的初始化文件(上面的東西)
  3. jquerymobile
  4. jQuery驗證
  5. 一切

我們使用以下jQuery庫: jquery 1.9.1 jquery -ui 1.10.3 jquery.mobile 1.3.1 jquery.validate

希望這有助於他人!