2016-10-09 32 views
1

C#がAPIの場合、私はブログプロジェクトを持っています。私はSQL Server 2016を使用しています。データベースに接続するには、エンティティフレームワークを使用しています。 ASP.NET Web APIのEF/LINQクエリからのプロパティの非表示

この

は私のADO.NET .edmx図である:ユーザーは、ポストは、ポストは、いくつかのコメントを有することが多くの研究者(ユーザー)を有することができる多くのポストを有することができる

enter image description here

、およびユーザはコメントを有することができる。

私は、ユーザー(またはユーザーのリスト)を取得するためにAPIをリクエストすることがレスポンスです:(エンドポイント: "/ API /ユーザー/ 1")

enter image description here

私は非表示にしたいです応答からのパスワードフィールド(私はそれがハッシュされていない知っているが、これはテスト目的のためである)ので、私からのコードを変更:へ

enter image description here

私は、ユーザー(!passowrd含む) ポスト配列のの詳細を確認

enter image description here

しかし、今:(

enter image description here

これは新しいコードを使用した結果です!

C#Web APIのEF/LINQクエリから機密データを非表示にする効率的な方法はありますか?

ありがとうございました。

+0

Usersクラスでは、パスワードをプライベートに設定できます –

+0

パスワードを作成/更新/削除できますか? – shabenda

+0

パスワードプロパティに 'ScriptIgnore'属性を入れてjsonにシリアライズしません –

答えて

0

これは、データ転送オブジェクトを使用して行うことができます。ここにそれの利点。 Create Data Transfer Objects (DTOs)を確認してください。 automapを使って自動的にマップすることができます。

循環参照を削除します(前のセクションを参照)。

クライアントが表示されない特定のプロパティを非表示にします。

ペイロードサイズを減らすためにいくつかのプロパティを省略します。

ネストされたオブジェクトを含むオブジェクトグラフを平坦化して、クライアントにとってより便利なものにします( )。

脆弱性を「オーバーポストする」ことは避けてください。 (オーバーポストに関する の説明については、モデルの検証を参照してください。) データベースレイヤからサービスレイヤをデカップリングします。

関連する問題