2014-02-10 54 views
0

我一直在考慮一個任務進行梳理在Silverlight應用程序中的錯誤,但我的身份驗證的知識是基本的最好的,所以我很卡,並尋求幫助。身份驗證的用戶在多個瀏覽器標籤

的問題是,如果一個用戶登錄到應用程序,然後打開另一個瀏覽器標籤/窗口,從應用程序中訪問的URL,這是完全可以接受的,系統工作正常,據我們所知。當用戶從一個標籤頁/窗口退出應用程序然後嘗試繼續在另一個標籤頁/窗口上工作時,會出現問題,在這種情況下會根據用戶的操作引發各種錯誤。

我們已經在應用程序中檢測到與數據庫連接問題的計時器,所以我認爲檢查用戶是否在此處進行身份驗證會是一個好開始,因此我檢查了AuthenticationService.User.Identity.IsAuthenticated,但不幸的是這總是如此。因此,我研究並調試了我的代碼,並且一旦Logout方法完成後,該屬性實際上設置爲false,但是,一旦用戶在另一個選項卡/窗口上註銷後,調試應用程序似乎不會出現這種情況。

我已經研究了互聯網上,但所有我能找到類似的問題是由東西是不相關的,或者說,我完全不瞭解造成的。

該系統使用其從FormsAuthentication繼承的認證類,但所有的LoginLogout函數使用鹼WCF RIA AuthenticationService服務方法。

任何人都可以提出一些建議,可能是什麼問題?

+0

如果你嘗試做在第二個選項卡的任何行動,而你已經從第一個退出,你得到任何錯誤由於您已註銷的事實而導致的? –

+0

@CorneaAli我得到的錯誤通常是基於服務失敗的,這在用戶註銷'AuthenticationService'時是有意義的,但是應用程序似乎只在嘗試調用服務時「實現」了這一點。 – XN16

回答

1

註銷時基本上會發生什麼是服務器會破壞你的會話在服務器內存/會話狀態等,如果有來自同一客戶端的新請求,服務器將讀取的會話cookie,並嘗試匹配它與現有的會議之一。如果這個會議不會被發現,那麼我們會得到你面臨的例外。

有一個Silverlight應用程序這基本上是一個客戶端應用程序,直到它真正需要的是(服務電話),這不會向服務器發送任何請求。我認爲您應該向所有應用程序實例發送註銷消息,以在其他地方的客戶端註銷用戶。

也許這個鏈接將幫助您

Can silverlight detect or communicate across browser instances?

Writing a javascript file from another javascript

+0

我使用了在其中一個鏈接中詳細描述的消息傳遞系統。很多工作和測試,但它似乎工作得很好。謝謝。 – XN16

相關問題