node.js - (设计题)如何解耦前后端来保护路由(后端)代码?(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 已经有很多包,所以不需要自己实现。
具体来说,这将防止后端将敏感数据发送给未经授权的请求。
编辑:为了澄清起见,在 Node.js 服务器上运行的代码不会公开发送,它将在您的服务器上运行并将其输出发送到前端。
编辑2:看起来我误解了你的问题。
如果您的代码目前没有解耦,则需要解耦。React.js 项目的所有代码都发送到浏览器。由于没有后端来处理任何类型的访问逻辑,因此任何此类逻辑都必须位于前端 (React.js) 中,这样很容易被绕过。
推荐阅读
- sql - 在 SQL 中,如何检查与另一个相似的行值
- lucene - 如何查看 Lucene 索引
- python-3.x - python 3错误不支持&的操作数类型:'str'和'str'
- phaser-framework - Phaser 3 - 从资产加载自定义字体
- javascript - 当我向 MSE 缓冲区添加小块时,Chrome 停止播放视频
- javascript - 基于值的按钮重定向响应
- kubernetes - 如何从父图表的 _helpers.tpl 访问在 _helpers.tpl 中定义的子图表模板
- javascript - Javascript:隐藏部分的问题
- java - 引起:com.google.api.client.http.HttpResponseException: 400 Bad Request POST https://oauth2.googleapis.com/token
- linux - Linux 内核在 stm32h743i 上崩溃