MVCのどのレイヤー(モデル、ビュー、コントローラー)でパーミッションロジックを処理する必要がありますか?
それを少し明確にしましょう。明らかに、UI(ビューとコントローラー)は、コンポーネントを表示/非表示にし、アクセス許可が拒否されたシナリオを処理するために、アクセス許可にアクセスできる必要があります。また、モデル層によってアクセス許可をデータベースに永続化する必要があることも明らかです。
しかし、このような「複雑な」許可ルールについてはどうでしょうか。
私が開発しているwiki/CMSシステムでは、各ユーザーはページごとの権限(表示、編集、名前変更など)のセットを持っています。既存のページの場合、これらの権限はデータベースから取得されます。新しいページの場合、ユーザーは(ページを作成/編集するときに)可能なすべての権限を持っていると見なされます。
もう1つの例は、ページのリストです
。現在のユーザーは、ページのリストで表示権限を持っているページのみを表示できる必要があります。
コントローラはこのロジックを処理する必要がありますか?または、コントローラーはGetPermissions()メソッド(またはGetPageList)の呼び出しのみを担当し、それを設定するためのすべてのロジックはモデルで処理する必要がありますか?