2009-03-11 3 views

답변

3

나는 그것이 그것을 의미하는 곳에 두는 것에 투표합니다. 대부분의 권한 항목은 AuthorizeAttribute 또는 속성에서 파생 된 속성을 사용하여 컨트롤러 작업 (또는 일부 컨트롤러)을 꾸미기를 통해 처리됩니다. 몇 가지 경우 (예 : 메뉴) - 권한 부여 검사를보기 코드 자체에 두는 대신 각 컨트롤러에서 계산하고 ViewData에서 플래그를 전달합니다. 모델의 특정 측면을 특정 역할에만 사용할 수있는 경우가 몇 가지 있습니다. 이러한 경우에는 현재 사용자와 역할을 취할 수있는 방법으로 모델을 확장하고 거기에서 확인합니다.

0

M, V 또는 C 중에서 선택해야하는 경우 C가 정확한 위치입니다. 그러나 앱을 모두 라이브러리에 포함하고 UI는 단순한 얇은 베니어 인 아키텍처를 권장합니다. 결국 컨트롤러에서 스택을 호출하지만 코드는 컨트롤러에 없습니다.

MVC에서 모델은 모델 일 뿐이며, "벙어리 데이터 개체"입니다. 상태를 유지하도록 설계되었으므로 동작을 지시해서는 안됩니다. 보기는 사용자가 상호 작용할 수 있고 또한 "벙어리"입니다. 뷰는 UI를 처리합니다. 컨트롤러는 비헤이비어가 앉아있는 곳이거나 앱 로직이 라이브러리에있는 경우 비헤이비어의 시작점입니다. 이해가 되니?

+3

MVC의 당신의 정의가 잘못 거부 사용자 권한을 부여보기 에서 사용자 자격 증명을 가져옵니다. MVC의 M은 가장 중요한 부분이며, 멍청한 데이터 객체는 아닙니다. 행동은 M이어야합니다. 이것이 비즈니스 논리입니다. 권한 부여가 비즈니스 논리의 일부인지 여부는 분명하지 않습니다. –

0

모델.

컨트롤러는 다른 방법으로 전환하기위한 것입니다. 보기는 ... 보는 것입니다.

따라서 모델 레이어에서 모든 인증 코드를 만들어야합니다. 이상적으로 모든 것이 잘 작동합니다. 그렇지 않으면 컨트롤러가 사용자를 적절한 로그인 상자로 가져갑니다.

1

나는 권한 부여가 교차 관심사라고 생각합니다. 한 곳에서해야합니다. 필요한 곳에서 선언적으로 적용 할 수있는 부분입니다.

1

컨트롤러!

사용자 인터페이스는 사용자 인터페이스 및 디스플레이 만 처리해야합니다. 모델은 시스템의 데이터를 나타내야합니다. 컨트롤러가 시스템 작동 방식의 논리를 처리해야합니다.

사용자를 인증하려면보기에서 제공된 자격 증명을 가져 와서 모델의 권한 부여 목록에 대해 확인한 다음 검사를 수행해야합니다. 이 컨트롤러에서 이루어집니다

: (모델이 일치 반환에 사용자 목록과 비교) 경우 다른 액세스를

관련 문제