我正在使用 CQRS 模式的 ASP.NET MVC3 中开发一个应用程序。命令端是使用实体框架制作的,实体映射到 SQL Server 中的表。查询端建立在 SQL 视图之上(也使用 EF)。
我应该如何管理对数据的访问?例如有一个文档。文档可以用密码保护,任何知道它的人都可以访问,或者只能由给定的登录用户访问。
应该在哪里以及如何实现允许/拒绝访问的逻辑?DocumentViewModel 中应该包含哪些数据?它是否应该包含一个密码字段以将其与用户提供的密码进行比较,以便我可以检查访问并获取数据以在单个查询中显示?或者它应该只包含将在 UI 中显示的字段,因此一个单独的查询(或存储过程调用?)将负责检查访问?
如果访问规则比仅检查密码更复杂——可能包括所有白名单、黑名单、付款、转账限制、账户类型等,该怎么办?一般来说 - 事情很远
SELECT * FROM ReadModelTable WHERE id = @id
这通常显示在“好”阅读场景的示例中。