我們有一個服務公開客戶端使用的所有數據,所有對象都有接口IAuthorized
。創建更好的方式來根據用戶角色過濾數據
獲取到客戶端的數據需要根據用戶憑據進行過濾。
流程就是這樣的客戶端調用服務 - >服務調用SomeManager類從數據庫中獲取數據...
這裏來了AuthorizationManager來過濾數據...
public class SomeManager
{
public object[] Foo()
{
var data = Repository.GetData();
return autorizationManager.Filter(data);
}
public object[] Foo_Else()
{
var data = Repository.GetOtherData();
return autorizationManager.Filter(data);
}
}
,你可以看到每個方法需要過濾,
所以我問你的是:我們可以建立一個基類,過濾一些每種方法的屬性輸出數據?它很聰明嗎?我們應該像這樣離開嗎?簡單地說,我們稱之爲自動化的方法?
你能想出更好的方法嗎?
一些東西像:
public class EngineManager :BaseFilterAutho
{
[AuthorizationCollection]
public object[] Foo()
{
var data = Dao.GetData();
return data; //get filtered
}
[SingleCollection]
public object Foo_Else()
{
var data = Dao.GetOtherData().First();
return data //get filtered
}
}
感謝您的評論,我不喜歡帖子銳利,因爲它的代碼注入。但你的想法'IQueryable'非常好,過濾可以在...中完成。 – guyl 2012-04-04 06:42:19