問題タブ [asp.net-web-api-odata]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-web-api-odata - ASP.NET Web API OData の一部のプロパティまたはクラスへのアクセスを制限する方法は?
授業がある:
そして、私は WebAPI OData コントローラーを持っています:
また、global.asax に次のコードがあります。
プロパティ BirthDate を非管理者から非表示にしたいのですが、現在のユーザーがその人ではない場合。ASP.NET WebAPI OData でそれを達成するにはどうすればよいですか? person.Id と比較する CurrentUserId があり、チェックする CurrentUserIsAdmin フラグがあります。問題は、そのような動作のサポートがないため、modelBuilder を介して Odata モデルに条件を追加できないことです。すべてのエンティティまたはプロパティを完全に削除することしかできませんが、管理者とユーザー自身に表示する必要があります。
c# - エンティティとしての「コンテナ」の名前は、Web API OData では許可されていません
私のエンティティのリストには、「コンテナ」と呼ばれるものが含まれています。(私の会社はコンテナを多く扱っており、かなり「確立された」用語です。)
そのため、それらのデータをモデル化したとき、自然にそれらをコンテナーと呼びました。
つまり、 というクラスがありContainer
ます。
Web API OData 用にすべてのコントローラーを接続しましたが、それを使用してクライアントをコンパイルしようとすると、エラーが発生します。(私は WCF Data Service Client nuget パッケージを使用しています。)
エラーは、エンティティのContainer
部分クラスと、ルート レベルのすべてのコレクションを保持する別の部分クラス ( とも呼ばれる) があるためContainer
です。(注: OData の WCF Data Services バージョンを介して同じエンティティを実行しているサービスでは、このエラーは発生しません。)
だから、私の質問は:エンティティを呼び出しContainer
て Web Api OData 経由で公開する方法はありますか? (クライアントのコンパイル時エラーは発生しません)。
注: これを再現しようとすると、「Container」と呼ばれるエンティティがルート項目でもある何かに関連付けられている場合にエラーが発生します (したがって、「Cntainer」と呼ばれる DataServiceContext クラスに含まれます。たとえば、コンテナが可能な ContainerTypes のリストがあり、ContainerTypes のルート リストがある場合、部分クラスがマージを試み、競合が発生します。
c# - エンティティごとの Web API OData セキュリティ
背景:
現在、WCF Data Services (OData) を使用して公開している非常に大きな OData モデルがあります。ただし、Microsoft は、WCF Data Services は終了しており、Web API ODataが進むべき道であると述べています。
そのため、Web API OData と WCF Data Services を機能させる方法を研究しています。
問題の設定:
モデルの一部は保護する必要はありませんが、一部は保護する必要があります。たとえば、顧客リストには、それを読むことができる人を制限するためのセキュリティが必要ですが、製品のリストなど、誰でも表示できる他のリストがあります。
Customers エンティティには、それに到達できる多くの関連付けがあります。2 つ以上のレベルのアソシエーションを数えると、(アソシエーションを介して) 何百もの方法で顧客に到達できます。たとえばProdcuts.First().Orders.First().Customer
。顧客は私のシステムの中核であるため、ほとんどのエンティティから始めて、最終的に顧客リストに関連付けることができます。
WCF Data Services には、次のような方法で特定のエンティティにセキュリティを設定する方法があります。
Web API OData を見ると、このようなものは見当たりません。さらに、私が作成しているコントローラーは、関連付けが行われたときに呼び出されないように見えるため、非常に心配しています。(つまり、セキュリティを に入れることはできませんCustomersController
。)
アソシエーションが顧客に到達する方法をすべて列挙し、それぞれにセキュリティを設定する必要があるのではないかと心配しています.
質問:
Web API OData の特定のエンティティにセキュリティを設定する方法はありますか? (どういうわけかそのエンティティに展開できるすべての関連付けを列挙する必要はありませんか?)
.net - XML で Web API OData v4 の OData カタログを取得する
Web API OData V4 エンドポイントを稼働させようとしています。
最終的に(エンドポイントからすべての DateTime プロパティを削除した後)実行に移し、エンティティのリストが JSON になりました。
私は JSON が大好きですが、LinqPad を使用してエンドポイントをテストしています。フィードにあるエンティティのリストの JSON を理解できません。
これを XML に戻す方法を調べましたが、見つからないようです。そのため、ここで質問しています。
Web API OData v4 フィードのエンティティのリストを JSON ではなく XML にする方法はありますか?