2011-12-05 93 views
0

我有一個多租戶應用程序,公司有許多用戶和許多客戶。 我使用before_filters保護了視圖和控制器,以便current_user只能查看屬於用戶公司的客戶端。這工作正常,未經授權的用戶收到「您沒有足夠的權利執行此操作」消息。但是,當用戶從例如「/ clients/1/edit」到「clients/2/edit」,然後他可以從另一家公司編輯客戶端。保護這個最好的方法是什麼?保護深層鏈接到未經授權的公司

回答

0

擴大您的策略以保護clients控制器 - 您需要檢查每個操作的客戶記錄的所有權,因爲只有一些人應該能夠訪問某些客戶端。

您應該可以繼續使用任何解決方案。另一種方式是使用類似CanCan這樣的集中訪問的方法,並且可以使調試變得更容易和更直接(更重要的是,通過測試套件確認)用戶只能訪問他們應該擁有的東西進入。

Here is a list常見/流行授權gems for Rails解決用戶訪問資源的問題。無論你最終選擇什麼方法,我都不能強調足夠重要的是用測試覆蓋率來覆蓋諸如安全訪問之類的東西。它從來都不是完美的(因爲你可能會忘記測試某些東西),但它會減少你破壞已經存在的安全訪問限制的可能性,通過保持與安全相關的測試儘可能地符合人的可能性。