2010-05-28 57 views
1

在我正在建設的網站上,我需要允許用戶編輯他們的訂單。很簡單。但是,如何確保用戶無法編輯其他用戶的訂單?我是否在模型或控制器中執行檢查以驗證訂單是否屬於經過驗證的用戶?我在哪裏阻止用戶訪問其他用戶的數據?

+2

我不認爲這是表示無知的危險程度。他已經知道通過驗證身份驗證的用戶來確保網站的安全,但這似乎更像是一種編碼風格和MVC體系結構問題。標題有點誤導。 – Tesserex 2010-05-28 13:40:12

回答

0

很抱歉,您的網站沒有任何方式讓用戶嘗試編輯其他人的訂單。但是,如果仍然可以嘗試,可以將該邏輯放入模型或控制器中。這是一個意見問題。有些人會說控制器應該做訪問檢查等事情,而模型只知道如何修改自己。其他人會說「胖模型,瘦身控制器」,並說安全檢查需要在控制器之間重複使用,所以他們應該進入模型。這是你的電話。

1

在視圖(是,視圖)中進行檢查以快速響應用戶錯誤。

在控制器中進行檢查以確保數據完整性。例如,在基於網絡的應用程序中,您可能使用瀏覽器JavaScript檢查所有字段(包括用戶名),以便用戶快速響應以修復錯誤的事務。然而,回到你的服務器,你不能依靠瀏覽器來真正驗證數據,因爲瀏覽器不在你的控制之中 - 它可能被破壞,無論是有意還是無意,並且不按照你的意圖進行驗證。因此,您需要在服務器上重新驗證的所有內容以確保完整性。

+0

這是正確的,你應該首先在服務器上做驗證,解析等工作。然後,您可以使用JavaScript和AJAX等客戶端技術添加波蘭語。這種方法被稱爲[漸進式增強](http://en.wikipedia.org/wiki/Progressive_enhancement)。想象一下,依靠JavaScript的瀏覽器端驗證,可以輕鬆禁用! – szalski 2012-03-12 09:06:39

相關問題