2010-07-19 184 views
2

我正在寫一個asp.net mvc c#網站,它不會使用會話...我有什麼選擇用於在沒有會話的情況下登錄登錄功能?asp.net mvc登錄體系結構選項

+0

你爲什麼不使用會話?有幾個我能想到的,每個人都會稍微改變我將如何回答這個問題。 – Matt 2010-07-19 13:59:25

+0

你也可能會發現這個問題有幫助:http://stackoverflow.com/questions/356562/web-authentication-state-session-vs-cookie-vs – Matt 2010-07-19 14:36:40

回答

1

System.Web.Security.FormsAuthentication使用cookies:

FormsAuthentication.SetAuthCookie(userName, rememberMe); 

沒有會話用於在那裏。當然,如果你想要的不僅僅是一個用戶名並且是認證的,你還需要其他方式來存儲這個狀態。您唯一真正的選擇是Cookie或網址,由於其他原因,其中任何一個都不可接受。

會話不是邪惡的,尤其是考慮到您在共享服務器或SQL Server實例上承載會話數據的選項。

會話肯定會被濫用,您的可擴展性會受到影響,但除非出現其他重要問題,否則我不會完全避開會話。

如果您必須完全拋棄會話,則必須在每次調用時重新創建狀態,這通常是一個昂貴的提議,否則您將不得不創建自己的狀態存儲機制,這會使我們回到標準的ASP.NET會話存儲備擇方案。

1

基本上我有3個選項可以認爲是對HTTP請求進行身份驗證。

1)只有餅乾,你設置你需要確定他們在他們的下一個請求

2)會議提供必要的信息,用戶的計算機上的cookie。會話將通常也使用cookie(存儲會話信息),但不必(見http://msdn.microsoft.com/en-us/library/aa479314.aspx

3)無狀態身份驗證。這實際上只用於調用webservices的非瀏覽器HTTP客戶端。這包括客戶端使用公鑰/私鑰組合對服務器進行身份驗證的http請求進行簽名。無狀態HTTP身份驗證協議的一個示例是OAuth(儘管OAuth作爲規範實際上是面向授權的,但其本質上的授權需要身份驗證)。

請參閱Web authentication state - Session vs Cookie vs?瞭解關於Cookie和會話的其他討論。