2011-07-06 49 views
0

我有以下問題:ASP.NET AJAX登錄驗證...取消頁面加載?

在我的web.config我有以下的授權設置:

<authentication mode="Forms"> 
    <forms loginUrl="~/LogIn" timeout="2880" name=".ASPXFORMSAUTH" defaultUrl="~/Dashboard/Dashboard.aspx"/> 
</authentication> 

我從以前的開發繼承存儲用戶對象到會話登錄後的代碼我計劃繼續現在使用這個邏輯。

現在,用戶導航到頁面。 Cookie是在他們登錄時創建的,並且用戶信息存儲在Session中。用戶現在關閉該頁面的選項卡,但保持瀏覽器打開狀態。用戶等待x時間導致會話過期,但不是cookie。用戶現在試圖直接導航到他們之前的頁面。表單身份驗證認爲他們已登錄,但他們不是。因此,我的登錄用戶爲空。

我試圖做到這一點:

protected void Page_Init(object sender, EventArgs e) 
{ 
    if (object.Equals(DashboardSessionRepository.Instance.LoggedInUser, null)) 
    { 
     FormsAuthentication.SignOut(); 
     FormsAuthentication.RedirectToLoginPage(); 
    } 
    else 
    { 
     //Continue with page init 
    } 
} 

不幸的是,這不會導致當前頁面取消其生命週期。

我想知道的幾件事情:

  • 這是如何正確的場景在現場處理的?
  • 如果不是正確的解決方案,這是一個可以接受的解決方案嗎?
  • 有沒有一種方法可以防止我自己在我的頁面生命週期事件(頁面加載,pageloadcomplete)的其餘部分檢查LoggedInUser是否爲空?我假設我可以將AutoWireEvents設置爲false,但是連接我自己的生命週期似乎更加錯誤。

感謝

回答

1

不幸的是,這不會導致當前頁面取消其生命週期。

如果你想停止的生命週期只需將結束該RedirectToLoginPage ......作爲

if (object.Equals(DashboardSessionRepository.Instance.LoggedInUser, null)) 
{ 
    FormsAuthentication.SignOut(); 
    FormsAuthentication.RedirectToLoginPage(); 
    Response.End(); 
    return; 
} 
else