CQRS 패턴을 사용하는 ASP.NET MVC3에서 응용 프로그램을 개발 중입니다. 명령 측면은 Entity Framework로 만들어지며 엔티티는 SQL Server의 테이블에 매핑됩니다. 쿼리 측면은 SQL 뷰 (EF도 사용) 위에 구축됩니다.CQRS 읽기 모델의 액세스 규칙
데이터 액세스를 어떻게 관리해야합니까? 예를 들어 문서가 있습니다. 문서는 암호로 보호되고이를 아는 사람이 액세스 할 수 있거나 로그인 한 사용자 만 액세스 할 수 있습니다.
어디에서 액세스 허용/거부 논리를 구현해야합니까? DocumentViewModel에 어떤 데이터가 포함되어야합니까? 사용자가 제공 한 암호와 비교할 암호 필드가 있어야하므로 액세스를 확인하고 단일 쿼리에 표시 할 데이터를 얻을 수 있습니까? 또는 UI에 표시되는 필드 만 포함해야합니까? 그러면 별도의 쿼리 (또는 저장 프로 시저 호출)가 액세스 확인을 담당하게됩니까?
비밀번호를 확인하는 것보다 액세스 규칙이 더 복잡하다면 - 모든 화이트리스트, 블랙리스트, 지불, 이전 한도, 계정 유형 등이 포함될 수 있습니다. 일반적으로 - 아주 멀리 자주 읽고 '좋은'시나리오의 예에서 보여됩니다
SELECT * FROM ReadModelTable WHERE id = @id
에서 일.
사용자는 ** 인증을해야합니다 ** 몇 가지 전략을 선택할 수 있지만 일반적으로 사용자 이름/비밀번호가 필요합니다. 그 후에 ** 승인 **을 처리하고 있습니다. 항상이 두 가지 책임을 분리하는 데 도움이됩니다. 그러나 귀하의 질문은 어디에서 도움을 줘야할지 모호합니다. 사양은 움직이는 표적 인 것처럼 보이며 지금까지 무엇을 얻었는지 (그리고 기본 또는 고급 지원이 필요한지) 명확하지 않습니다. –
현재 사양에는 문서에 대한 액세스를 보호하는 2 가지 전략 (승인)이 필요합니다. 문서 자체 또는 사용자 액세스 목록과 관련된 일반 암호가 필요합니다. 아니면 둘다. 인증은 MembershipProviders를 사용하여 구현되며 도메인 모델의 범위 밖에 있습니다. – Pein
글쎄,이 특정 예제와 관련된 대답을 원하지 않지만 CQRS의 복잡한 (그리고 가능성이있는) 인증 시나리오를 처리하기위한 일반적인 패턴이 필요합니다. – Pein