2012-09-05 100 views
0

我有訪問用戶信息的問題,而不使用會話和不使用cookie。 我如何管理沒有會話和沒有cookie的用戶信息? 請幫忙沒有會話沒有cookies?

+2

你不能。你爲什麼想要? – woz

+0

您可以使用http基本認證並通過播放中的用戶名跟蹤所有內容。這不會使用cookie或會話,但可以通過將所有內容綁定到用戶名來模擬會話,而不是隨機的ish會話ID + cookie –

回答

2

假設你正在談論Web瀏覽器和HTTP:你不能。

HTTP是無狀態協議。要用服務器端狀態重載它,需要一些唯一標識請求者的方法。而Cookie是Web瀏覽器保持客戶端狀態的唯一方式。

[編輯要注意]我應該指出,然而,人們可以想到的嵌入狀態數據的有限量的在適當的URI,作爲查詢片段的URI的部分的一部分。這是有限的,因爲大多數(每個?)實現對URI的最大長度施加了某種限制。此外,您的網絡應用程序將需要確保狀態數據正確地從URL傳播到URL。爲了安全起見,它應該進行加密處理,以免URI欺騙導致您的網站被破解。

0

您可以使用MySQL數據庫來存儲用戶信息。不幸的是,如果沒有使用會話變量,你必須通過一個url變量傳遞用戶的憑證,比如?username = dave password = cat(不要這樣做),否則你只需要學習一些關於安全性和以正確的方式做事(PREFERRED)。

+0

謝謝..對於幫助 – user1649879

0

這似乎是一個不必要的要求警告低於,但我會拍攝。

當用戶登錄時,向他們發出安全令牌。將該令牌存儲在數據庫中。令牌應該包含任意值(例如,十六進制編碼的GUID),而不是的名稱或密碼。數據庫還存儲令牌和實際用戶ID之間的關係。令牌應該有一個到期日期。

將令牌與每個請求一起作爲URL的一部分傳遞(ASP.Net爲無Cookie會話做這些事情)。由於您不想使用會話狀態,因此您必須在其他地方存儲與用戶有關的任何信息,可能是數據庫。每個頁面上的每個URL都需要有令牌。

您還可以在Web瀏覽器中利用local storage獲取非安全信息。

There are在ASP.Net中會話不切實際的情況下,即使是非常輕量級的對象。這是因爲會話訪問是如何序列化的;假設您的儀表板頁面中充滿了小部件,這些小部件向需要了解會話相關信息的WCF端點發出請求。如果該端點使用會話狀態,則每個請求將連續執行,因此性能會受到影響。

...如果兩個併發請求爲同一會議上提出的(通過使用 相同的SessionID值),第一個請求到達 會話信息的獨佔訪問。第二個請求僅在 第一個請求完成後才執行。

http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx

0

每一頁上隱藏輸入可以做到這一點,但你會使用POST的一切,而不是GET被卡住。這是非常不推薦的。