4

多数のメソッドを含む WCF (C#.Net) に組み込まれた WebService があります。すべてのメソッドで、現在のユーザーがこの特定のアクションにアクセスできるかどうかを検証したくありません。

今、私はこのようなものを持っています:

    public MyContract MyMethod(int MyParameter)
    {
        ValidateAccess(MyCurrentIdentityInfo, ActionEnum);

        // Do stuff here...
    }
    public void MyMethod2(int MyParameter)
    {
        ValidateAccess(MyCurrentIdentityInfo, ActionEnum);

        // Do stuff here...
    }
    etc...

最初にメソッドを呼び出してアクセス権をチェックし、次に必要なコードを実行していることに気付くでしょう。このコードは正常に動作しますが、サービス内のすべてのメソッドでこのメソッドを呼び出す必要があり、見栄えがよくありません。

私がやろうとしていることを達成するためのよりエレガントな方法はありますか? カスタム属性を使用しようとしましたが、成功しませんでした。

WebService 自体でユーザーを認証しようとしているわけではないことに注意してください。上記の例では、ユーザーは WebService で有効です。しかし、カスタム コードを実行して、たとえばレコードを削除するメソッドを呼び出せるかどうかを確認したいと思います。

4

1 に答える 1

1

Castle Dynamic Proxyを使用して、ログインしたユーザーに操作の検証を挿入することを考えることができます。

于 2012-06-01T18:18:55.290 に答える