这是针对数据形式的网络表单的初学者模式问题。我阅读了暴露数据库 ID - 安全风险?并且接受的答案让我认为这是浪费时间,但是等等......
我有一个引用业务逻辑库的 MVC 项目,以及引用相同的 NHibernate SQL 存储库的程序集。如果有什么东西迫使我直接从我的控制器代码库中引用这些存储库,我就会知道出了什么问题。但是当这些控制器在 URL 参数中与数据库记录 ID 交谈时,它只是看起来是错误的吗?
我无法想象那些 ID 会变得无法使用(通过 MVC 操作)。我认为我不需要两个 UI 实体对应于数据库中的同一行。我不打算让控制器以任何方式解释 ID。代理键将产生零差异。尽管如此,我还是想解决这个问题,因为关于理性设计的假设并不比跳层依赖更好。
您将如何制作一个仅引用业务逻辑程序集并在 BL 对象和仅对该会话有意义的 GUID 中进行对话的 Web 应用程序,而该程序集使用数据库 ID 保留事务?