例如何控制對ASP.Net MVC 3視圖上表單字段的訪問?
用戶 「jtirado」 被分配角色 「HR-助理」,可以訪問路線 「mymvcapp/employeee /編輯/ 1452」 編輯僱員(ID:1452)的數據。
作爲「人力資源助理」,該用戶可以更改員工電話號碼和電子郵件,可以查看員工工資,但不能編輯金額。
電話號碼,電子郵件,工資是dabatase字段,由視圖上的「asp.net-mvc-control」或「HTML-control」表示/呈現。所以我想根據用戶的角色來限制對這些控件的訪問。
以前的經驗
我以前做過一個經典的3層ASP.Net 3.5 Web窗體應用程序,使用母版,一個BasePage類和RoleBasedAccessControl數據庫模型。
MasterPage根據其指定的角色構建用戶有權訪問的選項菜單。
BasePage類檢查用戶是否有權訪問所需的頁面,如果是,檢查用戶可以編輯哪些控件(例如:DdlClientType,TxtLastName,ChkIsActive)。
這樣,我不必使用if-then語句來檢查權限,並且可以根據需要創建任意數量的角色,爲他們提供任何權限,而無需更改任何C#代碼。
我打算爲這個新的MVC應用程序使用相同的RoleBasedAccessControl數據庫模型。
問題
所以我dubts是關於如何使用ASP.Net MVC 3實現母版和BasePage類或是否有實現這一目標的另一種方式,如果我應該做的另一種方式。
在我看來,ViewMasterPage是與Web-Forms-MasterPages相當的MVC。我也聽說過剃刀布局頁面。
無論如何,我想我應該在控制器中處理所有這些。
我將使用:
- ASP.NET MVC 3.0
- 剃刀
我檢查這些帖子:
asp.net mvc user permissions and views
Best Practices for controlling access to form fields
Best practices for control permissions?
Implement secure ASP.NET MVC applications
但他們並不完全適合我的情況。
您正在使用哪種引擎?剃刀有佈局頁面而不是母版頁,這可能會影響答案。 –
@MikeMcCaughan我將使用Razor視圖引擎。增加了「剃鬚刀」標籤 – Nathan