前端/终端和后端都要检验输入的合法性,开发工作量*2,是否有更简单的处理方法?

2016-09-20 00:28:25 +08:00
 alexapollo

前端要在输入错误时做实时提示(可能得有本地逻辑),后端要保证数据合法
需求可能不同,但活确实是差不多的
有没有比较好的方法来做这个事?

9048 次点击
所在节点    程序员
50 条回复
seki
2016-09-20 00:34:26 +08:00
用框架和模板
linuxchild
2016-09-20 00:53:05 +08:00
没有吧 后端不能相信前端传来的数据…
sylecn
2016-09-20 00:57:45 +08:00
如果是浏览器客户端,前端必须支持编译到 JavaScript 才能在浏览器执行, 所以能够做到的语言不多。我知道的能在生产环境用的只有 JavaScript 和非常相关的替代比如 coffee script 和 typescript ,以及 clojurescript.

如果前端是 app 或者桌面应用,可以前后端用同一种语言开发。这样就可以用共享库 /模块的方式 share 代码。只要把校验这部分代码分割出来成为独立模块就好。

问问题的时候还是多给些上下文比较好。核心思路都是在前端和后端用同一种语言。当初 node.js 兴起的时候,这个是一大卖点。
think2011
2016-09-20 01:04:23 +08:00
后端传验证规则给前端。

这是本来打算做的做法,后来因为某些原因搁浅了。
EthanZ
2016-09-20 02:40:42 +08:00
validations on FE are for stupid users,
validations on BE are for malicious users.
ChiangDi
2016-09-20 07:06:27 +08:00
都用 JavaScript
hjc4869
2016-09-20 07:55:04 +08:00
后端传一个正则和一个提示文本给前端。
maxlvlvlv
2016-09-20 07:55:42 +08:00
Middleware
ersic
2016-09-20 08:01:31 +08:00
我觉得前端验证是为了提高用户体验,后端验证是为了系统的安全性,功能性是不同的。
huntererer
2016-09-20 08:04:03 +08:00
字数什么的验证可以放前端,用户体验好,但是"真正"的验证一定要放后端校验。
ChefIsAwesome
2016-09-20 08:25:33 +08:00
活差多了好吧。除了个正则一样,其他都不一样。
int64ago
2016-09-20 08:42:24 +08:00
前后端都是 JS 的话,就共用一套实现就好了
myweishanli
2016-09-20 08:43:31 +08:00
可以参考 yii2 后端配置好规则,前端自动生成对应的验证代码,后端也是根据规则验证。
sundev
2016-09-20 08:54:58 +08:00
这的确是个问题,因为随着前端规模的增大,验证已经不局限于一个正则了,而是复杂的逻辑,那么必然导致前端后端出现重复的逻辑。我做的一个项目也出现这个问题,正在寻找方法。
我们目前的做法是简单验证由自定义好的规则,后端前端自动生成部分验证逻辑,但是碰到复杂逻辑是后端前端各写一份代码。
sunjourney
2016-09-20 08:56:01 +08:00
前端验证只是保证用户体验的,想省功夫就用 ajax 后端实时验证咯
lwbjing
2016-09-20 09:31:10 +08:00
那就,,前端就不要做了,后端去提示,,哈哈。。
4641585
2016-09-20 09:32:52 +08:00
这是谈到 Node.js 有什么优势时的一个典型场景。
cosgbgas
2016-09-20 09:38:48 +08:00
这的确是个问题。
7sDream
2016-09-20 09:42:48 +08:00
貌似用 Django + django-angular 可以做到写一遍验证,前后端通用。

还有我之前准备报名 GSoC 的时候写的一个 proposal ,是准备给 Django 增加通用的客户端验证组件:

https://gist.github.com/7sDream/46de98da073b9021c5d0

发到 Google Group 之后貌似大家也挺支持的。

但是准备报名的时候我家出了点事,然后 proposal 就没写完……

后来我补完了,但是也没机会参加了 =,=

不过思路应该还可以?
qhxin
2016-09-20 10:04:54 +08:00
除非打造可信前端、终端、信道。然而这样成本比做两次验证还大。而且现有环境下前端验证和后端验证的性质是不一样的,不能混为一谈。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/307396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX