Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Synchronization 如何避免在服务器端和客户端重复验证?_Synchronization_Server Side_Client Side - Fatal编程技术网

Synchronization 如何避免在服务器端和客户端重复验证?

Synchronization 如何避免在服务器端和客户端重复验证?,synchronization,server-side,client-side,Synchronization,Server Side,Client Side,如何避免在服务器端和客户端重复验证?是否有一个web编程平台可以从另一个平台生成一个脚本,这样我就不必使两者保持同步?如今,大多数人放弃客户端脚本,而只做服务器端脚本。发送帖子时可以使用ajax,因此响应比重新加载整个页面要轻一些。服务器端验证是必需的,因为可以禁用客户端验证 客户端验证不是必需的,但它使您的应用程序在错误处理过程中响应更快,因为您不再需要向服务器提交表单并等待结果页面返回 设计良好的应用程序同时使用这两种方法 作为补充说明,Ajax可以用于某些类型的验证,例如检查用户注册表单上

如何避免在服务器端和客户端重复验证?是否有一个web编程平台可以从另一个平台生成一个脚本,这样我就不必使两者保持同步?

如今,大多数人放弃客户端脚本,而只做服务器端脚本。发送帖子时可以使用ajax,因此响应比重新加载整个页面要轻一些。

服务器端验证是必需的,因为可以禁用客户端验证

客户端验证不是必需的,但它使您的应用程序在错误处理过程中响应更快,因为您不再需要向服务器提交表单并等待结果页面返回

设计良好的应用程序同时使用这两种方法


作为补充说明,Ajax可以用于某些类型的验证,例如检查用户注册表单上的重复用户名。但是,基本验证(例如检查字段是否只包含数字)应该在不包含数字的情况下进行。

在大多数情况下,最好在服务器端进行验证。您有许多不同的选项来简化此过程,例如Ajax或在PHP中使用粘性表单。我个人倾向于在服务器端进行验证,因为用户可以选择关闭JavaScript,而他们不能关闭服务器端的验证….

有一些框架可以从服务器端验证配置生成客户端验证

现在我不知道您使用的是什么语言或框架,但这篇文章可能会有所帮助:

他将Castle Validator组件与JQuery一起使用,并添加了一些胶水,以根据服务器端验证属性生成客户端验证。它是针对asp.NETMVC的


/Asger

正如其他人提到的,您应该保留副本,因为客户端验证是为了帮助应用程序更快地做出反应以帮助用户,但是,真正的验证是在服务器端,因为在验证之前,您不应该信任传入的任何内容。您可能会在服务器端执行更广泛的验证,尤其是在需要检查数据源的情况下,例如,用户名是否唯一将在服务器端执行,但用户名是否足够长,或者电子邮件地址是否可以在客户端和服务器端执行

当存在重复时,我倾向于添加注释,特别是当我使用正则表达式时,以确保一个表达式中的更改在另一个表达式中更改


好的单元测试将有助于确保这两者始终保持同步。

您可以做的是让web服务运行服务器端验证逻辑,您的客户端验证可以通过AJAX调用,也可以在发回服务器时调用

我认为最好的方法是使用同时提供这两种功能的组件。他们的代码已经过测试,您不需要维护它。我过去曾成功地使用过控件。除此之外,我认为如果您想同时提供这两种代码,您必须维护两种代码基础。有一个名为的工具可以帮助将C#编译成Javascript(它进行翻译,而不是真正的编译),但我不确定它在这种情况下会有多好

Asp.net版本1有验证程序控件来执行您的请求


我正在寻找的不是MS,这个例子看起来并不能从整体上简化事情。这个原理也可以转移到其他平台上。。。您喜欢哪种语言/框架/平台?如何编写一个单元测试来测试服务器端验证程序和客户端验证程序?在正常情况下,您可能会得到一组重复的单元测试(每种语言一个),这些单元测试可能会不同步。您将有两个测试,但服务器端很可能比客户端做更多的检查,因为客户端只是查看数据是否大致正确,但是绝对正确性是服务器的工作,这并不能真正回答问题。这只是两者的定义,而他问如何防止两者的逻辑重复。