クライアントが使用するすべてのデータを公開するサービスがあり、オブジェクトのすべてがIAuthorized
というインタフェースを持っています。ユーザロールに基づいてデータをフィルタリングするより良い方法を作成します。
クライアントに送信されるデータは、ユーザーの資格情報に基づいてフィルタリングする必要があります。
流れは、クライアントがサービスを呼び出すことのようである - >サービスは
...データベースからデータを取得しSomeManagerクラスを呼び出し、ここで認可マネージャ・は
...データをフィルタリングするために来ますあなたは、各メソッドは、フィルタリングする必要が見ることができるよう
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