2014-01-23 47 views
0

我有一个概念,我想弄清楚,或找出是否有最佳做法。我的业务逻辑已经就位(服务器端)用于我的Web应用程序来创建帐户。代码验证是否提供了名字和姓氏,如果是,则进行数据库输入并返回账号。Javascript验证与业务规则

在网络端,我有javascript验证,在提交给servlet之前在字段上进行相同类型的验证(确保在servlet POST甚至完成之前提供了名字和姓氏)。

我的问题是,业务规则验证是以javascript验证的形式在web/ui端进行镜像,还是有更常见的做法?另一个例子可能是,名字必须超过1个字符(使此规则成立)。业务逻辑在调用数据库之前检查它。我应该有这个规则重复在我的JavaScript?这是否有一个常见的做法,或者是否有一些重复验证似乎合乎逻辑的方法?

回答

1

我认为这是一个很好的做法,在两个地方进行检查,因为如果你没有任何检查前端(事情的Javascript方面),用户将不得不提交请求,并可能离开该页面然后才发现她输入的值是无效的。将它置于原地允许他们即时反馈这些值是无效的;这使得更好的用户体验,恕我直言。另外,狡猾的用户可以使用类似海报或他们自己的脚本来绕过前端验证,所以你当然也希望它在后端也是如此。你需要小心的一件事是确保两个验证保持一致。例如,如果您决定可以省略名字,但仅更改前端的验证,则后端将阻止提交此新的有效值。我会建议为前端和后端编写单元测试以保持一致性。

+0

谢谢!这很有道理 – user1154644

0

好的做法是系统条目应该有验证以确保一致性得到维护。因此,在您的情况下,系统的输入是Web应用程序的后端。所以你需要在那边进行验证。 让我举一个例子,比方说,我创建了一个自动化工具,将数据发布到您的Web应用程序,并且不涉及UI,然后,如果该工具不提供firstName,则应该无法记录数据。

当你的系统被分成一个服务层和一个web应用程序(就像愚蠢的UI)来收集用户输入时,这就更加明显了。

现在你仍然需要(或者至少它更好)把ui验证的firstName。原因并不是真正阻止用户在数据一致性方面离开该领域,因为服务层不会让用户放弃。但它更适合更好的用户体验(UX),以便用户获得更快的反馈。

总之,是的,你应该。但是由于不同的原因。