2010-03-04 36 views
0

我正在做的基礎上,文章Securing Dynamic Data Preview 4 Refresh動態數據網站安全許可制度。系統包含額外的權限種類:「如果記錄不屬於用戶所有權,則拒絕記錄/域的操作」。動態讓表/列只讀/隱藏在ASP.NET DD

如果一個用戶只能讀取自己的對象,我們必須在詳細列表和檢查權限始終啓用過濾器。如果用戶只能編寫自己的對象,我們需要在編輯和刪除中檢查權限,從列表中刪除一些行中的「編輯/刪除」鏈接,使「用戶」字段只讀,並在插入中提供其值。我沒有考慮過這種列級權限。

所以,主要的問題,因爲我看到在這一刻:太多的地方放置相同的檢查(我根本就沒想到惡意用戶各具特色的POST數據)。此外,我不能讓使插入字段在同一只讀並且具有顯示並保存到DB值(我不希望把該模型中的部分類,因爲我認爲,已經有太多的地方需要編輯才能實現此功能)。

  1. 有沒有一個地方否認讀取或依賴於對象值的對象寫操作?
  2. 我怎樣才能提供一個默認值到外地,這樣它會插入網頁上顯示,插入到數據庫,不能由用戶插入之前可以更改?

回答

0

下面假設你使用LINQ to SQL。

有沒有一個地方否認讀 或根據對象值的對象 寫操作?

讀取

我所知,沒有限制更簡單的方法比讀一個過濾器添加到所有相關的LinqDataSource控制。如果你能夠實現你的過濾器,你可以編寫一個QueryCreated處理程序,然後添加一行註冊自定義處理程序到所有頁面模板。

寫入

Dynamic Data metadata,添加一個的OnValidate局部法向所有相關的表。如果當前用戶不允許ChangeAction給定記錄,則拋出異常。您仍然需要更新所有頁面模板以隱藏用戶無權訪問的UI元素,但至少您可以放心,在某些意外情況下可能發生的最壞情況是用戶看到錯誤頁面。

我如何可以提供一個默認值 領域,使之在 顯示插入頁面,插入到數據庫 ,不能由用戶 插入之前可以更改?

也許看添加OnCreated的OnValidate局部方法的一些組合。另見:this answer