首页 > 解决方案 > (设计题)如何解耦前后端来保护路由(后端)代码?(Node.js - Express - React)

问题描述

语境:

我正在制作一个 React 网站,该网站从 Google Sheets API 中提取信息并将特定行格式化为数据可视化。由于信息的敏感性,我不想分享一些列,幸运的是,有一些方法可以只分享指定的列,但这不是我问以下问题的原因:

问题:

我想要一个 Node API 来处理来自 React 前端的请求,但其代码在客户端的浏览器上不可用(例如,在构建期间创建的 bundle.js 文件中)。

澄清:我注意到,当在本地运行大多数 Node-React 应用程序示例并使用 webpack 构建它们时,您最终会得到一个bundle.js文件,其中包含在页面加载时传递给浏览器的 Node 请求处理代码。

提议:

我是否需要部署两个单独的应用程序(一个用于 Node,另一个用于 React),或者我可以将它们放在一起而服务器代码对客户端不可见?

编辑帖子答案:

您最终会得到一个bundle.js文件,其中包含在页面加载时传递给浏览器的 Node 请求处理代码。

这是不真实的。我认为是请求处理代码的代码是客户端请求调用代码。

标签: node.jsreactjsreact-fullstack

解决方案


您可以添加一个简单的身份验证系统。Node 已经有很多包,所以不需要自己实现。

具体来说,这将防止后端将敏感数据发送给未经授权的请求。

编辑:为了澄清起见,在 Node.js 服务器上运行的代码不会公开发送,它将在您的服务器上运行并将其输出发送到前端。

编辑2:看起来我误解了你的问题。
如果您的代码目前没有解耦,则需要解耦。React.js 项目的所有代码都发送到浏览器。由于没有后端来处理任何类型的访问逻辑,因此任何此类逻辑都必须位于前端 (React.js) 中,这样很容易被绕过。


推荐阅读