2012-03-24 13 views
2

このチュートリアルhttp://www.tugberkugurlu.com/archive/api-key-authorization-through-query-string-in-asp-net-web-api-authorizationfilterattribute に従って、カスタム認証フィルターを作成しました。特定のユーザーに基づくASP.NET Web APIでの承認要求

私は私のカスタム属性承認するとCarControllerを持っています。username = XXX &私は、URLに2つのパラメータを送る [ApiKeyAuth( "APIKEY"、typeof演算(ApiKeyAuthorizer))]

を...ホスト/車/ 4? pass = xxx それは基本的にはうまくいきますが、車の所有者だけに自分の車に関する情報を見せたいと思っています。 など。ユーザーABCはホスト/ Car/5のみを表示でき、ユーザーDEFはホスト/ Car/6とホスト/ Car/10を表示できます このシナリオをどのように解決できますか? 私のApiKeyAuthorizerのクエリ(ホスト/車/ ID)で使用されている車のIDにアクセスするにはどうしたらいいですか?

挨拶

答えて

1

あなたが彼のコードを見れば、https://github.com/tugberkugurlu/ASPNETWebAPISamples/tree/master/TugberkUg.Web.Http/src/sampleshttps://github.com/tugberkugurlu/ASPNETWebAPISamples/tree/master/TugberkUg.Web.Http/src/TugberkUg.Web.Httpは、私はあなたが、彼は、クエリ文字列から直接データを引っ張っていますことを見つけると思います。 idパラメータをプルするためには、そのメソッドを拡張するだけです。また、OnAuthorizationメソッドに渡されるHttpActionContextパラメーターのRequestContentKeyValueModelを調べることもできます。ドキュメンテーションはスケッチであり、私はまだそれと遊んでいないが、それは私にとって有望な候補のようだ。 しかし、経路データは、具体的には、間接的extension method介しHttpRequestMessageを介して利用できます。

message.GetRouteData()。

+0

はい、私は認証のためにユーザー名とパスワードの両方を渡しました。しかし、私はこの方法でIDやその他のパラメータを渡したくありません。そうでなければ、ASP.NET Web APIとにかくすべてのパラメータを自分で処理すれば – Bart

+0

@Bart - もう少し詳しく調べてみると、http://geekswithblogs.net/jdothoffman/archive/2012/03/06/mvc-4-beta-web-api-bug -with-binding-route-values.aspxを使用すると、より近づくことができますが、要求からGetRouteData拡張を介してルートデータを直接取得できるはずです。私は更新しました。 – tvanfosson

関連する問題