在一個MVC應用程序中,我有一個兩頁的過程。在第一頁上我們收集的信息將允許我們確定要更新哪個數據庫記錄。在第二頁上,我們收集用於更新此記錄的新值。爲了這個工作,我們需要一種方法來在兩個頁面之間保持信息,包括一些記錄ID。如何在ASP.NET MVC中存儲「每個瀏覽器選項卡」的信息?
我雖然有兩種方式來做到這一點,都有一些問題。
將信息存儲在Session對象中。
只要用戶沒有打開第二個瀏覽器窗口或選項卡,它就會工作。如果他這樣做,他有可能將修改應用於錯誤的記錄。假設他打開標籤1並完成第一步。記錄ID 1存儲在Session對象中。用戶然後打開標籤2並完成第一步。 Record id 2然後存儲在Session對象覆蓋記錄id 1中。然後用戶回到第一個選項卡並完成第二步,認爲他正在編輯記錄1,但實際上他將編輯記錄2。
將信息存儲在頁面的隱藏字段中。
這樣可以解決問題1的解決方案,但對於惡意用戶來說,更改記錄標識以覆蓋任何記錄是微不足道的。
雖然輸入這個問題,但我只是第三個解決方案。這是兩個論文的混合體,但我不確定它是否完全安全。我們可以在頁面的隱藏字段中存儲一個隨機ID,並用它來爲我們用於訪問會話對象中的數據的密鑰添加前綴。我認爲這會奏效。解決方案2可以利用這個嗎?
安全地存儲「每個選項卡」數據而不是「每個會話」數據的其他好方法是什麼?
我想我需要的信息存儲在服務器端,所以用戶不能忍受它。 –
我gess唯一的方法是通過ajax發送到服務器。 [這裏是很好的深度答案](http://stackoverflow.com/a/16796744/1849444)。 –