Asp.net

ASP.NET 中沒有會話狀態的使用者身份驗證

  • April 3, 2009

為 ASP.NET 應用程序提出的要求之一是我們在全域範圍內禁用會話狀態。(這是沒有商量餘地的。)

另一個要求是我們有一些使用者身份驗證的方法。我正在考慮使用 ASP.NET 的成員提供程序模型。

是否可以在沒有會話狀態的情況下進行使用者身份驗證?

我們正在尋找的特定使用者身份驗證範例是:

  • 使用者未經身份驗證訪問網站
  • 使用者輸入註冊資訊(聯繫方式等)
  • 在剩餘的會話中,使用者可以訪問某些內容,這要歸功於他們的註冊狀態

有沒有辦法用 cookie 做到這一點?

這可以安全地完成,所以cookie不容易被欺騙嗎?

ASP.NET 中是否有內置功能來支持這一點,還是我們需要推出自己的方法?

ASP.NET Forms 身份驗證不使用SessionState. 它使用 cookie 來儲存身份驗證票證。

web.config您還可以通過編輯文件來強制通過 SSL 通道發送身份驗證票證。

您需要的所有功能都內置在 ASP.NET 中。

http://msdn.microsoft.com/en-us/library/aa480476.aspx

當然,cookie 會做到這一點。

想想基本面。無論如何,會話狀態由 cookie 管理。

這就是你要做的。

當他們登錄時,您會獲取他們的使用者 ID 和超時時間(因此登錄僅​​持續 30 分鐘或其他時間)。

取那個字元串,然後散列它。

(java,不重要)

String cookie = userid + ":" + timeString + ":" + md5(userid + ":" + timeString + ":" + "secretpassword");

然後,當請求到達您的站點時,檢查 cookie。首先檢查它的完整性。

String parts[] = cookie.split(":");
String newHash = md5(parts[0] + ":" + parts[1] + ":" + "secret password");
if (!newHash.equals(parts[2])) {
   // boom, cheater!
}

然後檢查時間字元串,看看他們是否仍然“登錄”,然後從那裡開始。

確保您是否及時更新每個請求的 cookie。

引用自:https://stackoverflow.com/questions/716078