リポジトリレイヤーを備えたWindows認証済みMVCアプリケーションがあります。コントローラとデータベースとのすべての対話は、リポジトリを介して行われます。各コントローラーには、リポジトリへの参照があります。
public class PostController : Controller
{
private Repository db = new Repository();
[HttpPost]
public ActionResult DeletePost(int id)
{
// Authorize that the user is allowed to delete this post...
db.DeletePost(id);
}
}
私の質問は、承認ロジックをリポジトリ層に移動する良い方法があるかどうかです。Repository.DeletePost()
認証されたユーザーが作成していない投稿の削除を拒否する機能が欲しいのですが。問題は、私のリポジトリが認証されたユーザーが誰であるかを知らないことです。コントローラは(経由でController.User
)知っています。
コンストラクターが呼び出された時点では明らかに定義されていないため、コンストラクターController.User
へのの受け渡しは機能しません。Repository
Controller.User
Repository
認証されたユーザーが誰であるかをどのように通知できますか?Repository
各アクション内で構築するのが最善でしょうか?それとも、リポジトリレイヤーで処理するのは悪い考えですか?