2009-05-19 60 views
0

這兩個模型之間在安全性方面有什麼不同嗎? IE瀏覽器。在第二個例子中,webuser/hacker可以以任何方式訪問這些方法嗎?在asp.net中的Viewmodel安全mvc

public class ObjectViewModel 
    { 
    public PropertyA {get;set;} 
    public PropertyB {get;set;} 
    public PropertyC {get;set;} 
    } 



public class ObjectViewModel2 
    { 
    public PropertyA {get; private set;} 
    public PropertyB {get; private set;} 
    public PropertyC {get; private set;} 

    private void SetPropertyA() 
    { 
     ...GetDataFromRepository(); 
    } 

    private void SetPropertyB() 
    { 
     ...GetDataFromRepository(); 
    } 

    private void SetPropertyC() 
    { 
     ...GetDataFromRepository(); 
    } 
} 

回答

4

首先,模型本身沒有暴露給Web瀏覽器。它只暴露於駐留在服務器上的視圖渲染引擎。您可以通過您的操作向您的模型中的某些屬性公開訪問權限,但這些只能通過查詢或表單參數。它不會訪問基礎方法。

其次,您應該知道的一件事是默認的模型聯編程序要求您希望設置的任何屬性都可以通過公共存取器來使用。如果您使用私人設置器創建屬性,則不會通過模型聯編程序進行更新。

1

不,這些方法不能以任何方式通過View訪問,除非您明確地告訴它。

除非您的控制器專門公開這些方法,否則只有通過模型綁定可用的屬性。

1

當繞過視圖引擎並返回類似Json(model)XmlResult(model)的東西時,您可以公開您的數據。但是,由於您的數據正在序列化,您的視圖模型方法不再適用。