私は MVC を初めて使用し、モバイル アプリケーション用の Web API を構築しています。asp.net Web API とエンティティ フレームワークを使用しています。
Web API の認証と承認についてよく読んだことがあります。私が不明な部分は、誰がプロパティにアクセスしようとしているかに応じて、エンティティの特定のプロパティへのアクセスを防ぐ方法です。
たとえば、モデルにブックマーク エンティティがあるとします。エンティティは次のようになります。
public class Bookmark
{
public long ID { get; set; }
public User Owner { get; set; }
public Boolean IsPublic { get; set; }
}
public class User
{
public string UserID { get; set; }
public DateTime DateJoined { get; set; }
public string Address {get;set;}
public virtual ICollection<Bookmark> Bookmarks { get; set; }
}
2つの質問があります。
1) 誰でも ../mysite/username/bookmarks にアクセスできるはずですが、別の人が別の人のブックマークを要求している場合は、公開ブックマークのみを返します。このロジックはどこに置くべきですか?このビジネス ロジックはモデルに含まれている必要があります。このビジネス ロジックを処理するには、DTO のような別のクラス セットを作成する必要がありますか? このようなメソッドをエンティティ フレームワーク クラス自体に追加する例は見たことがありません。
2) ブックマークのセットを返すと、bookmarkController と言うことができます。Bookmark には User プロパティがあるため、アドレスなど、共有したくない情報を含む User のプロパティも返されることに気付きました。
どのように (応答する前にプロパティを無効にするか、別の DTO に割り当てるか)、このシナリオをどこで処理する必要があるか (ユースケースに固有の DTO またはコントローラーにメソッドを追加する) がわかりません。
前もって感謝します。