Asp.net
ASP.NET 中沒有會話狀態的使用者身份驗證
為 ASP.NET 應用程序提出的要求之一是我們在全域範圍內禁用會話狀態。(這是沒有商量餘地的。)
另一個要求是我們有一些使用者身份驗證的方法。我正在考慮使用 ASP.NET 的成員提供程序模型。
是否可以在沒有會話狀態的情況下進行使用者身份驗證?
我們正在尋找的特定使用者身份驗證範例是:
- 使用者未經身份驗證訪問網站
- 使用者輸入註冊資訊(聯繫方式等)
- 在剩餘的會話中,使用者可以訪問某些內容,這要歸功於他們的註冊狀態
有沒有辦法用 cookie 做到這一點?
這可以安全地完成,所以cookie不容易被欺騙嗎?
ASP.NET 中是否有內置功能來支持這一點,還是我們需要推出自己的方法?
ASP.NET Forms 身份驗證不使用
SessionState. 它使用 cookie 來儲存身份驗證票證。
web.config您還可以通過編輯文件來強制通過 SSL 通道發送身份驗證票證。您需要的所有功能都內置在 ASP.NET 中。
當然,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。