首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >共享后端和前端输入验证或模块

共享后端和前端输入验证或模块
EN

Stack Overflow用户
提问于 2019-03-07 22:54:04
回答 3查看 2.4K关注 0票数 2

我想分享输入验证,因为:

前端的javascript用户体验,即时告诉用户输入是否是后端的good/wrong

  • Security关注点,即使用户绕过前端的javascript,用户也不能搞乱
  • 的RESTful API
  • 同样前端的javascript总是以浏览器的解释为条件,不能被

信任

在一个完整的javascript web app (前端: react,后端: nodejs)中共享输入验证的最好方法是什么?

我正在考虑的解决方案是创建一个验证器模块,将我所有的javascript验证器放在代码库的根目录下:

  • 如果在本地主机上,两个环境都使用此模块来验证输入。
  • 如果在生产/预生产中,我的部署脚本会在部署之前在前端和后端复制模块。每次我尝试验证输入时,
  • 导入代码将如下所示:const validator = process.env.ENV === 'local' ? require('../../validator') : require('/validator')

有没有其他被广泛接受的方法来做到这一点(我猜这是一个非常常见的问题,但我没有发现类似的问题)?如果不是,我的方法正确吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-13 01:08:42

答案和实现中的要点:

  • Implementation是利用全栈javascript app
  • 的好方法,它会产生一些复杂性,你需要小心不要实现在两个非常不同的环境(在客户端浏览器和nodejs后端)之间表现不同的库/javascript方法。因此,我不会使用任何第三方库,而只是在我的验证器中使用普通的modules)
  • Because (例如:不要在我的验证器中使用export关键字,而是使用module.exports = {},因为ES6 export不能在nodejs中工作)
  • 如果你想避免生产中的bug,每次你修改你的validator模块并在两个环境中测试时,你应该总是在前端和后端部署(我添加了一个在部署之前运行的脚本,并检查两个javascript之间的差异,这让我获得了很多时间。我现在还分享了我的应用程序中的其他函数式编程
  • 意识到这种使用自己的模块的方式很像在前端和后端使用npm模块(如果您认为它对社区没有用处的话,它只是比在npm注册表上发布它要简单一些)。
票数 2
EN

Stack Overflow用户

发布于 2019-03-07 23:27:44

使用验证作为模块是一种很好的做法,但您应该考虑如果由于某种原因,您必须/想要将后端技术更改为非Javascript的东西,比如node,会发生什么情况。

如果你要实现它-你将有一个客户端和服务器对这个模块的依赖,你将不得不维护这个模块的不同版本,或者在任何时候你有一个验证更改时部署客户端代码和服务器代码-这导致了一些复杂性,你也应该考虑到。

票数 1
EN

Stack Overflow用户

发布于 2019-03-07 23:08:07

通常,您会在前端进行简单的验证,在后端进行更复杂的验证

例如:验证电子邮件是否在前端使用正则表达式,发送一封简单的邮件以确认该电子邮件的存在

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55046707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档