2013-06-18 61 views
2

好吧,基本上,我想在我的web應用程序中實現表單身份驗證,並執行此操作我需要知道web服務器如何決定請求是一個新的請求還是不。這是因爲webs-server爲每個新請求創建一個新會話。什麼使請求在asp.net中發出新的請求C#

所以我創建一個authenticatecoookie每個成功的登錄和一個持續的cookie,將持續到它超時,無論天氣用戶關閉他/她的瀏覽器或丟失連接,並必須重新連接,因爲這個cookie存儲在客戶端電腦。所以在這種情況下可以說用戶重新連接到服務器,並且他的authenticatecoookie還沒有超時。所以他的請求已經被認證,所以這也意味着這不是一個新的要求?並且服務器不會爲它創建一個新的會話,因爲它已經退出了嗎?

如果authenticatecoookie在用戶重新連接之前超時,則該請求將不會被認證,但該請求是否也會考慮新的請求,因此服務器將不會創建新的會話它是否已經退出?

我在問這個問題,因爲我一旦用戶成功登錄後會在會話中存儲用戶標識,這樣當authenticatecoookie超時時,我可以去會話並在會話中檢索用戶標識作爲會話超時遠晚於authenticatecoookie,然後更新我的用戶表指示可以說用戶重新連接到服務器和他 authenticatecoookie還沒有超時,在

回答

1

該用戶不再登錄所以在這種情況下,然而。所以他的請求因此是 已經驗證,所以這是否也意味着這不是一個新的 請求?

這不是來自表單身份驗證系統角度的新請求,因爲請求提供了有效的表單身份驗證Cookie。

並且服務器不會爲它創建一個新的會話,因爲它已經退出了嗎?

會話處理機制不同於表單驗證機制。客戶端可以使用有效的表單身份驗證Cookie並且沒有有效的會話cookie來訪問服務器(並且,因爲這些機制是不同的,所以可能有任何組合) 因此,如果需要會話並且客戶端不需要,服務器將創建一個新會話有一個。

這樣,當authenticatecoookie超時,然後我就可以去 retrive用戶ID在會話作爲會話倍,比authenticatecoookie

了很久以後 如果您的網站主要是認證基於,也許你應該通過配置比會話持續時間更長的表單身份驗證持續時間來做到這一點。

  • 您的頁/操作加工過程中在您的網頁/控制器/動作強制形式的認證,確保用戶ID存儲在會話中。如果沒有,將它存儲,以便它在session_end上可用
+0

@jbl ...有趣的我想我會嘗試你的建議...如果我正確理解你的話,你建議我讓表單驗證超時,會話超時並在會話中存儲一個用戶標識符,這樣當會話超時時會引發session_end事件,然後我可以從該會話中確定用戶標識符信息然後相應地更新我的用戶表,然後爲該用戶結束表單身份驗證,因此下次收到來自該用戶的請求時,它將被未經身份驗證,因此用戶將不得不再次登錄...我是正確的? –

+0

@FabioDelarias是的。除非你不能在不從客戶端刪除cookie的情況下結束表單身份驗證(這在session_end中是不可能的)。表格認證的持續時間將不得不「稍長」一些。這個答案的底部會話/形式認證持續時間有趣的鏈接http://stackoverflow.com/a/15199149/1236044 – jbl