2012-05-24 71 views
1

我已經在幾個.com上工作過,我們從未使用過內置的ASP.NET會話狀態。它一直在檢查cookie是否有效的會話檢查,並將會話與數據庫或其他方式進行比較,但最終它是cookie。我們沒有使用任何基於ASP.NET的會話對象。MVC混亂的會話狀態

那麼爲什麼人們使用MVC的所有這個會話狀態服務器廢話?我從來沒有見過它的需要。

+0

不能說我見過MVC&會話一起提到,但那麼我沒有看過。我很久沒有使用會話狀態了,並且會同意你的看法。雖然有用,但請關掉它,因爲,你知道,也許有一天,誰知道。 –

+0

我儘可能地避免會話狀態,但在有些時候它不會有用嗎?例如,如何在不使用會話狀態的情況下執行此操作:「跟蹤用戶查看的最後20個產品。在側欄小部件中,根據最近查看的20個產品顯示類似產品的建議。」有沒有辦法做到這一點沒有會話狀態? –

回答

4

我從來沒有見過它的需要。

我也是。我從來沒有在我的web應用程序中使用ASP.NET會話狀態。我更喜歡用REST風格來設計它們,而不是引入狀態。其中一個最重要的東西我在任何Web應用程序做的就是添加下面一行在web.config中,以確保任何未來開發商不使使用會話的錯誤:

<sessionState mode="Off" /> 

我猜的人正在使用它可以簡化跨多個請求的一些易失性數據的存儲。

+0

yea看到這是什麼讓我感到困惑。我曾經在serveral .com上工作,我們不曾使用內置的asp.net會話對象。但是我仍然看到一些人訴諸於他們在MVC應用程序中唯一知道的事情,那就是使用IMO一個不需要的沉重會話狀態對象/框架。你只需要形式auth票和cookie ... – PositiveGuy

0

如何處理沒有活動的會話超時需求? Cookie只是不太安全。

+0

我認爲OP的說沒有會話,沒有會話超時擔心,因爲該應用程序不是會話感知。如果你的意思是身份驗證超時,那麼auth cookie負責處理。你需要解釋你的意思是「餅乾只是不太安全」 –

+0

餅乾不是100%安全,沒有任何東西。你如何定義這個問題是你在傳入的請求中檢查IP,並將它與auth cookie中的內容進行比較......如果它們匹配,則認爲沒有人攻擊你的cookie會話。但這個曲奇並不安全,因爲我已經看到5個.com使用cookies,並且這是在電子商務或任何公共網站上的常用和首選方式,如果你知道你是什麼正在做。在我看來,使用MS提供的會話狀態的人從來沒有經歷過真正的.com或高流量站點&親方式來做到這一點 – PositiveGuy

2

ASP.NET確實有一個由SQL會話狀態索引的會話ID,該會話ID是根據Cookie的會話ID進行檢查的。 ASP.NET還允許您將會話存儲在內存中(默認)。 MVC中提供了相同的構建塊。

基本上你已經實現了(「總是檢查一個有效的會話檢查cookie,會話與數據庫或其他方式進行比較,但最終它是cookie。」)正是你所希望的poohing!沒有意義重新發明輪...

至於具體的用例,你可以用它來處理任何需要堅持的狀態。在你的具體情況下,只是檢查你爲什麼存儲cookie和查找數據庫 - 這正是你會使用會話狀態(SQL或內存)

+0

我非常同意。我認爲人們會口口相傳,因爲有些人歷史上曾經濫用過它。用例很容易找到,當你需要它時,不需要像OP那樣重新創建它。 –