当前位置:  开发笔记 > 编程语言 > 正文

你在哪里做验证?模型,控制器或视图

如何解决《你在哪里做验证?模型,控制器或视图》经验,为你挑选了2个好方法。

您在哪里将用户输入验证放在Web表单应用程序中?

    查看:JavaScript客户端

    控制器:服务器端语言(C#...)

    型号:数据库(存储过程或依赖项)

我认为每个级别都需要验证:

    用户输入了一个合理的值吗?

    是日期实际日期,是数字实际数字...

    再次执行1.中的所有检查以及检查恶意攻击(IE XSS或SQL注入)

    1中完成的检查主要是为了避免用户出错时服务器往返.

    由于它们是在javascript中在客户端完成的,因此您不能相信它们已经运行.再次验证这些值将阻止一些恶意攻击.

    是否满足依赖性(即,用户是否对有效问题添加了注释)

    一个好的界面使这些很难被违反.如果有人抓到了什么东西,那就出错了.

[受此回应的启发]



1> FlySwat..:

我检查所有层,但我想注意我使用的验证技巧.

我在数据库层验证,对模型的适当约束将提供自动数据完整性验证.

这是一种似乎在大多数网络程序员身上丢失的艺术.


是的,但是失败的插入并不容易找到失败的*原因*.
但是,为什么在你之前可以轻松检查的时候,为什么要让它走得那么远呢?您可以像解析错误消息一样轻松地验证数据.

2> MattW...:

在模型中进行验证,可选择在UI中自动化例程,从模型中获取提示并改善用户体验.

通过自动化例程,我的意思是在用户界面中不应该有任何每个模型的验证代码.如果你有一个验证方法库,比如RoR(它有像validates_presence_of:username这样的方法),那么控制器或视图应该能够读取这些并应用等效的javascript(或任何方便的)方法.

这意味着您必须在ui中复制完整的验证库,或者至少在使用预先存在的验证库时提供映射.但是一旦完成,您将不必在模型外部编写任何验证逻辑.


你能用"自动化程序"清除你的意思吗?
推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有