큰 나무가있는 곳에 복잡한 시스템이 있다고 가정 해보십시오. 간단한 생각은 직원/관리자 관계이며, 많은 직원은 한 관리자에게보고합니다. 이제 관리자 이외에 관리자를 대신하여 행동 할 수있는 지원 직원이 관리자의 직원을 조작 할 수 있습니다.보안과 같은 교차 절단 문제를 적용하는 CQRS
CQRS 시스템에서는 행동의 호출자가 지원 직원 인 "편집 직원"이라는 가상의 행동에 대한 메시지를 어떻게 모델링 할 것입니까? 이 작업은 관리자 보안 관계에 따라 직원이 해당 영역의 직원에게 행동하는 경우에만 성공할 수 있습니다.
보안의 확인은 수정중인 사람이 실제로 해당 관리자의 직원 체인 내에 있는지 확인하기 위해 데이터베이스에 쿼리하는 것과 관련됩니다.
이 쿼리는 어디에서 발생합니까? "직원 편집"메시지를 발송하기 전에?
메시지를 생성하기 전에 데이터의 유효성이 확인 된 경우 최종적으로 일관성있는 시스템에서 "직원 편집"메시지가 처리되기 전에 사용자가 "작업 완료"메시지를 완료하지 않은 별도의 작업이 발생했다고 가정합니다. 직원 편집 "작업. 명령 핸들러가 해당 메시지의 보안 문제를 확인하지 않으면 사용자가 더 이상 해당 권한을 실행하지 않아도 메시지는 계속 성공합니다.
이렇게하면 UI 유효성 검사 &과 비슷한 양면 유효성 검사가 서버 측 유효성 검사가 최상의 동작 과정임을 의미하는 것으로 보입니다. 그러나 검증을 완료하는 방법은 마치 CQRS의 주요 교리를 위반하는 것처럼 보입니다.
CQRS를 사용할 때 이러한 교차 절단 문제를 다룰 때 가장 좋은 접근 방법은 무엇입니까?
IMO 일반 응답이 없습니다 ... 나는 항상 명령 처리기 쪽에서 * 적어도 * 및 ** 선택적으로 ** "앞쪽"(대기열에 메시지를 받아들이는 부분에있을 수 있음)) – Yahia
또한 인증, 간단한 승인 (이 사용자는이 유형의 작업을 수행 할 수 있는지 여부)과 같은 비즈니스 크로스 컷 (business cross-cutting) 문제와 특정 항목에 대해 허용되는지 여부를 결정하는 비즈니스 규칙을 구별하는 것이 중요하다고 생각합니다. –