モバイルクライアントを備えたWCFRESTサービスを作成しています。
モバイルクライアントは、OAuthに沿った「authToken」を使用してユーザーのIDを表します。
authTokenは文字列パラメーターであり、現時点では、サービス内の(ほぼ)すべてのメソッドに渡されます。
私がやりたいのは、MVC ActionFilterに似たものを書くことです-これはすべてのメソッドに対して実行され、authToken処理を実行します:トークンを検証し、関連するアカウントをルックアップし、Accountインスタンスオブジェクトを返します-ルックアップが失敗すると、エラーが返されます私のメソッドも呼び出されません。
私がやりたいことと似ているこれらの 2つの質問を見つけましたが、トリッキーな部分はどういうわけかアカウントインスタンスを導入しているように見えますか?IOperationBehaviorインターフェイスを実装する[AuthOperation]属性を非常にうまく作成できますが、調べた新しいアカウントインスタンスを導入するために何をする必要があるかを理解できません。
public object Invoke(object instance, object[] inputs, out object[] outputs)
{
Account = new Account(_context);
if (!Account.LoadByAuthToken(((string)inputs[0]).FromEncodedString()))
{
outputs = new object[0];
return new ErrorResponse
{
Code = ResponseCode.Exception.ToString(),
DebugMessage = MyStrings.AuthToken_NotFound
};
}
Accountインスタンスを呼び出されたメソッドに渡すにはどうすればよいですか?
object result = this._originalInvoker.Invoke(instance, IntroduceAccount(inputs,Account), out outputs);
return result;
}
最終的に私が欲しいのは持っていることです
public MyResponse GetContacts(string authToken)
サービスで公開されていますが
public MyResponse GetContacts(Account acct)
また
public MyResponse GetContacts(Account acct, string authToken)
実際にサーバーに実装され、authToken->アカウント変換が「アクションフィルター」によって処理されます。
答えが「WCFを使用しないで、このようにしてください...」である場合でも、他に提案されているものが他の要件にも適合する限り、私は幸せです。