2011-04-24 66 views
1

嘿夥計們,我想知道有沒有什麼辦法可以維護東西,如登錄,註銷,用戶會話...等,而不使用ASP中的成員資格.NET MVC?如何維護與ASP.NET MVC的用戶會話

法拉茲。

+0

嘗試使用'FormsAuthentication'或編寫自己的會話管理。 – 2011-04-24 07:17:25

回答

-3

您需要使用會話字典和會話狀態服務器。有關更多信息,請參閱http://msdn.microsoft.com/en-us/library/ms178581.aspx

警告詞:根據我的經驗,InProc會話狀態模式僅保留您在當前HTTP請求的生命週期中放入Session的值。即使您使用的是單個HTTP服務器,並且您認爲內存中的存儲空間仍然存在,它們也不會像您期望的那樣持續存在請求。這可能只會在VS2010中使用內置http服務器進行調試時發生,但即使這樣也會導致您在嘗試理解狀態信息未被保存的原因時遇到很多麻煩。

+3

因爲InProc會話狀態存儲在進程的地址空間中,所以在應用程序進程的整個生命週期內(或直到被清除)持續存在。如果應用程序被回收,那麼你將失去會話。 – 2011-04-24 07:23:55

+0

感謝Doug,關於認證/授權的Wat? – nfa379 2011-04-24 07:26:25

+0

@Russ:這就是文檔所說的,但這不是我所經歷的,所以我給出了警告。在VS 2010中,IIS和內置服務器可能有區別,後者只有每個請求的持久性,而前者具有每個進程的持久性。如果是這樣,那使調試和測試不可靠。在任何情況下,InProc都不具有可擴展性:只要您需要多個服務器,您就需要一個外部地方來存儲狀態。 – DougWebb 2011-04-24 17:11:59

2

您可以使用Session對象來存儲會話範圍數據。

但是對於認證/授權,您需要提出自己的方案。

+0

感謝Oded,我使用了Session對象和一個ASp.NET應用程序。只是懷疑它是否適用於ASp.NET MVC模型。 – nfa379 2011-04-24 07:28:17

+0

另外,你有工作的例子/鏈接認證/授權沒有成員的asp.net mvc完成? – nfa379 2011-04-24 07:29:18

+0

@ nfa379 - 我的頭頂沒有任何東西。谷歌是你的朋友,但我不知道爲什麼你必須重新發明會員才能工作。 – Oded 2011-04-24 07:31:02

7

有三種與您所指的區域相關的提供者模型。

MembershipProvider涉及身份驗證,驗證用戶和存儲諸如最後一次登錄的日期,用戶名等

RoleProvider涉及授權您的應用程序的特定區域的用戶相關的用戶數據。

SessionStateProvider與爲應用程序存儲會話有關。

如果默認提供者不合適,您可以爲其中的任何人編寫自己的自定義提供者。您可以在沒有提供者的情況下推出自己的認證,授權或會話管理,但是涉及的工作會比實現自定義提供者更多。