2012-01-09 3 views
2

私のASP.NET MVCアプリケーションでWCFを使用すると、データサービスがmy(EF 4.1).mdfファイルからデータを取得します。ときに、ユーザーのアクセスhttxWCF Data Service ServiceOperationからのアクセスのみを許可する方法

public static void InitializeService(DataServiceConfiguration config) 
{ 
    config.SetEntitySetAccessRule("Exercies", EntitySetRights.All); 
    config.SetServiceOperationAccessRule("GetAllExercies", ServiceOperationRights.All); 
    config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; 
} 
[WebGet] 
public IQueryable<Exercise> GetAllExercies(string name, string pass) 
{ 
    if (Membership.ValidateUser(name, pass)) 
     return CurrentDataSource.Exercies; 
    else 
     return CurrentDataSource.Exercies.Where(e => e.Public == true); 
} 

今:しかし、私は例えば、認証で表示したいいくつかのフェイルドがある//localhost/MyService.svc/Exercies彼らはユーザ名を与えられていないが、彼らはすべてのものを得ることができますパスしてください。クエリインターセプタ:
私の一時的な解決策は、名前にGetAllExerciesにちょうどExerciesが、任意のより良い方法がある私はわからない...

答えて

2

を再はい、よりよい解決策があります。実際、エンティティセットとサービス操作に同じ名前を使用すると、特定のシナリオで問題が発生する傾向があります($メタデータはクライアントにとって「混乱」です)。それは100%安全でもありません(もしあなたがそれを持っていれば、何らかのナビゲーションプロパティを通してエンティティにアクセスすることを妨げません)。

このhttp://msdn.microsoft.com/en-us/library/dd744842.aspxを参照してください。アイデアは、エンティティセットクエリの認証フィルタ部分を作成することで、WCF DSサービスはエンティティセットにアクセスするすべての場所で使用されるようにします。

+0

インターセプタはパラメータを受け入れることができないため、エンティティセットアクセスを無効にするために使用します。もっと良い解決策はありますか? – nvcnvn

+0

気にしない.....私は現在、HttpContextを使ってクエリ文字列にアクセスしています。 – nvcnvn

関連する問題