2014-05-14 66 views
0

我有一個MVC3網站,如果會話超時到期,我必須將用戶重定向到登錄頁面。經過一番研究,我已經得到了我要補充到web.configMVC 3.0會話狀態超時和身份驗證表單超時

<sessionState mode="InProc" cookieless="false" timeout="1"></sessionState>

設置用戶會話超時。在這種情況下,如果用戶閒置,則會在1分鐘後清除用戶會話數據。我已添加此

<authentication mode="Forms"> 
     <forms loginUrl="~/Default/Login" timeout="1"/> 
    </authentication> 

在會話超時的情況下將用戶重定向到登錄頁面。其實,它的工作原理,但我有一些問題,以準確瞭解發生了什麼:

  1. 這兩個標籤之間的關係是什麼?它們之間的依賴是什麼?
  2. 是否強制要求兩個標籤的timeout屬性= 1?
  3. 有沒有更好的方法,我可以按照完成我所需要的。

在此先感謝。

+0

對於#3,你從未解釋過你的「需求」是什麼。 –

回答

-2

sessionState元素配置當前應用程序的會話狀態設置。 當新客戶端開始與Web應用程序進行交互時,將會話ID被髮出並與會話有效期間來自同一客戶端的所有後續請求相關聯。此ID用於維護跨請求與客戶端會話關聯的服務器端狀態。該元素控制ASP.NET應用程序如何爲每個客戶端建立和維護此關聯。 該機制非常靈活,可讓您將會話狀態信息託管在進程外並跟蹤狀態,而無需使用cookie等等。

超時:指定會話在放棄之前可以閒置的分鐘數。對於進程內和服務器模式,timeout屬性不能設置爲大於525,601分鐘(1年)的值。 會話超時配置設置僅適用於ASP.NET頁面。更改會話超時值不會影響ASP頁面的會話超時。同樣,更改ASP頁面的會話超時也不會影響ASP.NET頁面的會話超時。 默認值是20分鐘。

表單身份驗證: -這是基於cookie的身份驗證,其中用戶名和密碼作爲cookie文件存儲在客戶端計算機上,或者通過每個請求的URL發送。基於表單的身份驗證向用戶提供一個基於HTML的網頁,提示用戶輸入憑據。

你的所有問題的回答與上述描述

+0

實際上,我並不完全理解你的意思,「會話超時配置設置僅適用於ASP.NET頁面,更改會話超時值不會影響ASP頁面的會話超時。同樣,更改會話時間ASP頁面的輸出不會影響ASP.NET頁面的會話超時,默認值爲20分鐘。「而且我仍然在認證表單的超時和sessionState的超時之間感到困惑。 – Maystro

+0

SessionState基本上適用於跨ASP.net應用程序的所有會話,而身份驗證僅適用於登錄頁面的用戶名和密碼身份驗證 –

0

SessionState的之間的區別和窗體身份驗證:

SessionState的:一個會話的每個請求您的應用程序創建。哪個會有它自己的超時。

表單身份驗證:當用戶使用您的應用程序進行身份驗證時,會創建身份驗證。這也會有它自己的超時。這個超時值作爲票證的一部分存儲,票據被加密並存儲在cookie或URL(無Cookie驗證)中,我相信。

如果您想根據會話結束用戶驗證,則必須將其寫入您的應用程序。我會這樣做的唯一原因是,我將認證數據存儲在會話中,以便跨越請求。

相關問題