我創建了一個使用實體框架數據庫的asp.net odata web api項目。這沒什麼特別的,很多教程都採用這種方法。我已經通過用戶和角色保證了這個api,所以只有管理員才能使用web api保存某些內容。基於ASP.NET Web API角色的安全性
我的下一步將是使某些信息只能用於特定角色。例如,如果我有一個具有薪水屬性的實體員工。那麼如何限制(讀取)此屬性的訪問權限僅限於管理員?
編輯
我會嘗試指定我的問題。 鑑於以下控制器:
public class EmployeeController : ApiController
{
public IQueryable<Employee> Get()
{
return _Db.Employees;
}
}
現在我能寫的OData querys aqainst這如http://api.com/employee?$select=FirstName,LastName,Salary&$orderby=Salary
如果我不希望某些人(或角色)的工資訂購我可以實現一個OrderByQueryValidator。 但是我怎樣才能完全隱藏正常用戶的Salary屬性,同時仍然允許管理員選擇它?
因此,鑑於上述控制器,我希望管理員能夠執行這兩個:
http://api.com/employee?$select=FirstName,LastName,Salary&$orderby=Salary
http://api.com/employee?$select=FirstName,LastName&$orderby=FirstName
,而普通用戶只能執行此:
http://api.com/employee?$select=FirstName,LastName&$orderby=FirstName
,並得到一個錯誤當試圖選擇Salary屬性時。
這就是你得到setter和getters的。 – Tarec
如果我要爲這種情況使用getter,我仍然必須返回一個默認值(或null)。然後在我的json或xml響應中,我獲得了默認值的屬性。這對我來說並不合適。 – n3rd