MVC의 어느 계층 (모델, 뷰, 컨트롤러)에서 허가 로직을 처리해야합니까?MVC에서 권한을 적용해야하는 계층은 무엇입니까?
조금 명확하게 설명해 드리겠습니다. 분명히 UI (보기 및 컨트롤러)는 구성 요소를 표시하거나 숨기고 권한이 거부 된 시나리오를 처리 할 수있는 권한에 액세스 할 수 있어야합니다. Model 레이어에 의해 사용 권한이 데이터베이스에 유지되어야한다는 것도 분명해 보입니다.
하지만 "복잡한"권한 규칙은 어떻게됩니까?
내가 개발하고있는 wiki/CMS 시스템에서 각 사용자는 페이지 당 권한 (보기, 편집, 이름 바꾸기 등)을 가지고 있습니다. 기존 페이지의 경우 이러한 사용 권한은 데이터베이스에서 검색됩니다. 새 페이지의 경우 사용자는 가능한 모든 권한을 가지고 있다고 가정합니다 (작성/편집 할 때).
또 다른 예는 페이지 목록입니다.
현재 사용자는 페이지 목록에서보기 권한이있는 페이지 만 볼 수 있습니다.
컨트롤러가이 논리를 처리해야합니까? 또는 컨트롤러가 GetPermissions() 메서드 (또는 GetPageList)를 호출 할 책임 만 있고 해당 모델을 채우는 모든 논리가 모델에서 처리되어야합니까?