2015-01-29 2 views
0

PHP MVC 응용 프로그램이 있습니다. 비즈니스 로직은 서비스 계층 및 도메인 모델에서 구현됩니다. 내 질문은 인증 확인을 어디에 구현해야합니까? 서비스 계층에서? 아니면 도메인 모델입니까?어디서 자동 코드를 작성 하시겠습니까?

서비스 계층 패턴 인 http://martinfowler.com/eaaCatalog/serviceLayer.html에 대한 토론에서 Martin Fowler는 '응용 프로그램 논리'와 '비즈니스 논리'를 분리하려고합니다. 전자는 서비스 계층에, 후자는 도메인 객체에 들어갑니다.

일부 승인 규칙은 복잡합니다. 권한 부여는 현재 사용자, 역할, 관련이없는 많은 객체의 상태 등에 따라 달라질 수 있습니다. 도메인 객체 또는 경우에 따라 이러한 객체의 팩토리에 속하는 것 같습니다.

그러나 다른 경우에는 규칙이 매우 간단합니다. 예를 들어, "감독자 만 새로운 게시판 게시물을 승인 할 수 있습니다." 이 경우 서비스 계층에서 권한을 확인하려고합니다. 보안 요구 사항을 없애고 (모의 가능한) 서비스 계층 수신기에 배치하여 코드를 테스트하기가 쉬워졌습니다.

그래서 서비스 계층에 간단한 권한 부여 체크를 넣어야하고 도메인 개체에 더 복잡한 권한 부여 체크를 넣어야합니까? 아니면 두 개의 레이어로 나누어 문제를 묻는 중입니까?

+0

필자의 대답은 인증보다 오히려 유효성 검사 (도메인 모델에 분명히 속함)와 관련이 있다고 생각했기 때문에 이전 답변을 삭제했습니다. 이와 비슷한 좋은 질문이 있습니다. http://stackoverflow.com/questions/7261490/should-authorization-be-part-of-the-model-or-controller – ChrisC

답변

0

좋아요, 그래서 인증 코드를 서비스 계층으로 옮겼고 모델에서 추가 검사를해야하는 몇 가지 인스턴스 만 있다는 것을 알았습니다. 일관성을 유지하기 위해 이러한 검사를 성능 계층의 서비스 계층에도 적용 할 수는 있지만 지금까지는 필요성을 느껴 보지 못했습니다.

관련 문제