MVC 3 (RC2)을 사용하는 응용 프로그램과 같은 CMS를 개발 중이며이 시점에서 교차로에 있습니다. 제안 된 접근 방식이 적절한지 아닌지 스스로 확신 할 수 없습니다. 나는 그것이 내가 줄을 많이 무너 뜨리는 데 드는 모퉁이를 자르려고한다는 것을 알고 있기 때문에 그것이라고 생각한다.응용 프로그램 논리 (인증/권한 부여를위한 적절한 장소)
내 문제를 설명 바로 아래로 얻을 것이다 :
1) 나는 (리소스를 편집 가능한 만든되어야하는)을 호출 할 수 있습니다.
- 는 자신의 자원 자원의
- 편집 할 수 있습니다 기타 자원
3) 창조주를 편집 할 수 있습니다
2)는 사용자 지정 권한 시스템은 2 (많은) 권한이있는 구현 A는 '자신의 리소스를 편집 할 수 있음'권한이 있으면 편집 할 수 있습니다.
4) 별도의 사용자 만 편집 할 수 A를 그들이 권한이있는 경우 '편집 할 수 있습니다 기타 자원'
이제 요구 사항이 설명되어 있음을, 내가 지금까지 당신이 내 방법을 알려주지 :
1) I 'ResourceController'나는 액션이 불렀다
2) '편집'이라는 컨트롤러가있는 것은
3) 동작은 그것에 속성이 있습니다 : [CustomerAuthorize (Perm.CanEditOwnResource, Perm.CanEditOtherResource, 모든 = TRUE) ]
4) 도메인 유효성 검사를 담당하는 서비스 클래스가 있습니다.
따라서 사용자가 '자체 리소스 편집 가능'또는 '다른 리소스 편집 가능'권한이있는 경우 작업 메서드를 호출 할 수 있습니다.
사용자가 올바른 사용 권한을 가지고 있는지 여부 (리소스를 소유하고 있는지 여부에 따라 결정) (어떻게 결정해야합니까?) 컨트롤러 작업, 리소스 서비스 클래스 , 별도의 서비스 클래스에? 서로 다른 의견을 듣기 위해 대기
...
하지만 그 논리의 중복은? 같은 수표를 여러 번 반복하면됩니까? 하지만 당신의 우려를 이해합니다. 패턴을 배우기 위해 일부 OSS 프로젝트를 볼 수 있는지 궁금합니다. – kidoman
@ KiD0M4N : 반복하지 않는 것보다 장기간 유지 보수 고려 사항을 포함한 일부 논리를 반복하는 것이 더 쉬운 시나리오가 있습니다. 즉 때로는 기술적 제약이나 기존 디자인 결정에 따라 완전히 순수한 "반복하지 말고 자신을 추구하는"것이 부당하게 어렵습니다. –