gpt4 book ai didi

asp.net-mvc - MVC 验证 : where to validate?

转载 作者:行者123 更新时间:2023-12-02 00:33:32 25 4
gpt4 key购买 nike

我们说 Controller 层的模型验证是验证我们要操作的所有数据的正确位置。在这种情况下,如果我们将 UI 更改为另一个(记住我们的层必须完全分离),新的数据验证原则将执行 - 在这种情况下,我们所有的内部规则都可能被违反。您可能会说数据模型是单独的层,而该层(而非 UI)是唯一的验证位置。但在这种情况下,我发现在服务或业务对象层验证数据更有效,不是吗?实际上我们有一些对象对应我们的领域对象:db表记录、linq2sql类、领域对象类、viewmodel类。它应该只是一个地方来验证数据模型吗?为什么它应该在(或靠近)UI 中而不是在其他层中?在我看来,验证必须与所有其他业务逻辑一起发生在服务层。如果我需要尽快通知用户有关错误的信息,除了主要验证之外,我还会使用客户端验证。想法?谢谢。

最佳答案

数据验证是模型的责任。在我看来,放置验证规则的最佳位置是作为数据库中的约束。具有约束可确保不会将不正确的数据存储在数据库中,无论它是如何访问的。不幸的是,只有基本的约束适合在数据库中表达。

下一个放置验证的地方,当使用 linq-to-sql 进行数据访问时,我是实体类上的扩展方法。然后所有代码都必须通过验证。

为了改善用户体验,可以在 UI 中重复基本验证,但这只是为了用户体验和及早发现最常见的错误。在网络上,最好使用 JavaScript 验证。在富客户端上,有时可以重用与扩展方法调用的代码相同的代码。

永远记住,任何暴露给客户端的服务都可能被缺乏真实客户端验证的恶意客户端调用。永远不要相信客户端会正确地进行任何类型的验证或安全检查。

关于asp.net-mvc - MVC 验证 : where to validate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com