我正在製作一個Windows Phone 7應用程序,它具有登錄/註銷語義(對Web應用程序進行身份驗證)。當用戶註銷時,我回到登錄屏幕並忘記會話身份驗證。如何在Silverlight/Windows Phone 7中清除導航歷史記錄?
這樣做時,我還想清除導航歷史記錄,以便無法返回到期望它們已經通過身份驗證的頁面。
看不到如何做到這一點NavigationService
,我想知道是否有辦法做到這一點。
我正在製作一個Windows Phone 7應用程序,它具有登錄/註銷語義(對Web應用程序進行身份驗證)。當用戶註銷時,我回到登錄屏幕並忘記會話身份驗證。如何在Silverlight/Windows Phone 7中清除導航歷史記錄?
這樣做時,我還想清除導航歷史記錄,以便無法返回到期望它們已經通過身份驗證的頁面。
看不到如何做到這一點NavigationService
,我想知道是否有辦法做到這一點。
這裏有幾件事要看。首先,我建議您熟悉這裏提供的指導。
Introducing the concept of 「Places」 - Peter Torr's Blog
Redirecting an initial navigation - Peter Torr's Blog(向下的那一刻不好意思)
如果你能這樣指導這是最好的路徑內工作。有處理登錄屏幕的具體建議。如果您不得不提供主頁按鈕功能,要小心你如何應用這一點,因爲驗證者正在將應用程序敲回去,以便在導航方面以意想不到的方式行事。我覺得如果這個功能在主頁按鈕後面,你應該在驚喜部門確定。隨着時間的推移,我們將看到認證。可以說,「註銷」方案同樣適用。
這裏有三種方法,從Richard Woo,Maarten Struys,Sam Jarawan。
恐怕您無法清除堆疊的頁面,更重要的是,您的應用無法通過認證。 More info
此代碼工作得很好(它需要在你的頁面),還沒有嘗試過把它過去的認證還沒有,但是代碼沒有問題:
while (true)
{
if (this.RemoveBackEntry() == null)
{
break;
}
}
這似乎與documentation不同,其中說,如果沒有更多項目,則會發生異常,因此我在用戶語音上輸入logged a bug,因此未來可能會更改。
更簡單的方法只是清除返回堆棧是做到以下幾點
while (NavigationService.CanGoBack)
{
NavigationService.RemoveBackEntry();
}
注意的是,如果你這樣做在裝載的情況下,將火每次頁面導航到並再次單擊後面會關閉應用程序!
重要提示:如果您使用webcontrol或NAX廣告系統,該頁面以及網頁控件都會佔用該backkey,因此將存在應用程序而不是返回到頁面。
**更新 也只是找到了一個更短的手版從MS開發中心
while (NavigationService.RemoveBackEntry() != null);
一個簡單的線條。尼斯
你應該爲你的頁面
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
try { while (NavigationService.RemoveBackEntry() != null) ; }
catch (System.NullReferenceException ex) { }
}
感謝米克「裝」事件。我期待在它回來後閱讀這篇文章。我很難看到登錄和註銷這種非常典型的情況,特別是在對遠程資源進行身份驗證時,它符合我一直在閱讀的有關Windows Phone導航規則的內容。 – dkackman 2010-10-23 04:42:05
實際上有兩個職位,我上面編輯 - 閱讀順序。他的博客備份順便說一句。 – 2010-10-23 05:33:26
看起來這個建議也是最近進入文檔的方式。 http://msdn.microsoft.com/en-us/library/gg278407%28v=VS.92%29.aspx – 2010-10-23 05:46:34