【发布时间】:2014-10-03 23:19:05
【问题描述】:
我正在过渡到响应速度更快的前端 Web 应用程序,并且我有一个关于模型验证的问题。这是设置:服务器有一个用于插入、更新、检索等的标准 REST API。这可以用 Node 或 Java Spring 编写,没关系。前端是用 Angular(或类似)之类的东西编写的。
我需要弄清楚在哪里放置验证码。以下是要求:
所有验证码都应该只写在一个地方。不是客户端和服务器。这意味着它应该驻留在服务器上,在持久化时位于 REST API 内。
前端应该能够理解来自服务器的验证错误,并将它们与导致错误的特定字段相关联。因此,如果“用户名”字段是必填字段,客户端可以在该字段旁边放置一个错误,显示“用户名是必填字段”。
应该可以验证正确的变量类型。因此,如果我们期待一个数字或日期,而得到一个字符串,则错误将类似于“'Yo' is not a correct date.”
错误消息应本地化为用户的语言。
谁能帮帮我?我需要一些简单而强大的东西。
谢谢
【问题讨论】:
-
仅在服务器上进行验证的原因是什么,拥有像 angular 或骨干这样的框架的最大优势是您可以在将数据传递到服务器之前轻松地在前端进行验证
-
@Quince:无论如何,如果后端被暴露,您应该在后端进行验证,以确保您也为恶意输入做好准备。如果您在一个地方进行验证,那么在两个不同的地方维护相同的逻辑就会成为一种负担。
-
从用户体验的角度思考......更快地在客户端进行验证。从安全角度考虑……需要在服务器上进行验证。答案......你需要两者。问题...是否有一个框架可以让您编写一次代码并将其编译到客户端和服务器端?
-
@Ruskin:我记得读过一些使用 Node.js 和另一个 javascript 框架的解决方案,它允许您只编写一次验证代码并让它在服务器和客户端上运行。如果我能记得那是什么……
-
@Ruskin:我找到了解决方案。在下面检查我的答案。
标签: angularjs validation rest