首页 > 编程语言 >如何在 Heroku React 应用程序中访问 API 密钥

如何在 Heroku React 应用程序中访问 API 密钥

时间:2022-09-03 11:57:39浏览次数:101  
标签:应用程序 React Heroku API 密钥 添加

如何在 Heroku React 应用程序中访问 API 密钥

Image by MasterTux, PixaBay.com, licensed under CC0

所以你花了几个小时在你的新 React 应用程序上工作,你已经完成了 Heroku 部署过程,现在你终于导航到了你的应用程序的新 Heroku 地址 aaaaand...... .你瞧,你添加的那个很酷的特性(在我的例子中是一个使用地理定位服务的谷歌地图),它使 API 调用到某个后端的某个地方在部署后不再可以访问你的密钥,而且你有很多红色在你的安慰。哎呀……

在开发中隐藏密钥

在部署之前,隐藏 API 密钥的过程非常简单。根据您的开发设置,您(像我一样)可以简单地将您的 API 密钥添加到 dotenv 文件中,方法是预先添加 REACT_APP_ 到任何你想命名的键,像这样:

然后,您可以将该文件添加到您的 gitignore 中,这样文件中的一个或多个密钥就不会意外地被推送到您的 Github 存储库:

然后,您的应用程序中的代码只需使用 dotenv 文件调用 API 密钥 过程 模块和 环境 财产 :

googleMapsApiKey={${ 进程.env .REACT_APP_YOUR_API_KEY_HERE}}

这种方法在开发中很好,并且允许您的代码访问您的 API 密钥,而无需将它们推送到您的 GitHub 存储库,在那里它们可以被窃取并用于更邪恶的目的(是的,那里有精通技术的网络犯罪分子会梳理 GitHub 帐户对于 API 密钥...为什么人们不能做正确的事……)。

部署后隐藏密钥

虽然上述方法对您的开发环境很简单且非常有用,但它在您的生产环境中不起作用,因为您忽略了 .env 文件不会被推送到 Heroku……至少不会以你想要的方式……

重要的是: 您的代码在部署期间被打包在称为块的 .js 文件中,并且您的超级密钥稍后可以在部署后的 bundle.js 文件中找到。显然,我们不希望这些信息公开提供给密钥梳理者,因此最好删除您的任何秘密 .env 在完成部署过程之前提交文件,这样它们就不会被打包在构建中。别担心,我们可以将它们添加到 Heroku,这样您的应用程序仍然可以运行。

将密钥添加到 Heroku 配置也是一个相对简单的过程。

首先,首先导航到 Heroku 并登录您的帐户:

然后,登录到您的帐户后,单击仪表板中列出的 Heroku 项目的名称:

进入项目目录后,单击 设置 选项卡,然后是 显示配置变量 按钮:

这将显示您的 Heroku 应用程序的配置变量。列表中已经有一些变量,但不要担心其中任何一个。向下滚动到列表底部,您会看到空白键/值输入 添加 按钮:

最后,添加您在应用程序中定义的 API 密钥名称 .env 文件和值(如果您选择在配置变量中重命名键,则需要将 React 代码中的名称更改为新名称才能使您的功能正常工作),再次确保在前面添加 REACT_APP_ 到名称,然后单击 添加

中提琴!假设命名约定在您的 Heroku 配置变量和您的 React 应用程序 js 代码中匹配,您现在应该看到您的功能在您的生产构建中正常工作,没有控制台错误(注意:您可能需要刷新浏览器)。

结论

将代码的秘密保密是应用程序开发的重要组成部分,对于像我这样的新手程序员来说,这个过程可能有点让人头疼。希望我已经为您简化了流程,以防止将来出现上述问题。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/11592/46360311

标签:应用程序,React,Heroku,API,密钥,添加
From: https://www.cnblogs.com/amboke/p/16652282.html

相关文章

  • 九月二号——API、java String类的常用方法
    API应用软件编程接口。是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组里程能力,而无需访问源代码,或理解内部工作机制的细节。String类的......
  • React + Dva + Antd + Umi 快速入门
     最近一个项目用了React+Dva+Antd+Umi 技术栈 基础框架概念React前端三大框架之一。Dva由阿里架构师sorrycc带领team完成的一套前端框架,在作者的github......
  • node34-node.js得异步api
     constfs=require('fs');fs.readFile('./1.txt','utf8',(err,result1)=>{console.log(result1);fs.readFile('./2.txt','utf8',(err,result2)......
  • node36-node.js得异步api
    constfs=require('fs');fs.readFile('./1.txt','utf8',(err,result1)=>{console.log(result1);fs.readFile('./2.txt','utf8',(err,result2)=>......
  • 企业工商类API 推荐
    之前在网上看到了一些很不错的企业工商类的API,今天在这里整理出来分享给大家~聚美智数企业工商基本信息查询API,传入公司名全称、注册号、社会统一信用代码中的任意一种......
  • react-native 类组件调用函数组件里面的方法
    父组件class类组件,关键代码我用红色部部分标记importReactfrom"react";import{View,Text}from"react-native";importHomeModalChilderfrom"../../compon......
  • 网络通信类API 推荐
    之前在网上看到了一些很不错的网络通信类的API,今天在这里整理出来分享给大家~华为云查询号码归属地API,查询号码归属地,支持手机号码和固话。APISpace手机在网状态API,......
  • react-native 实现阴影效果
    github地址: https://github.com/SrBrahma/react-native-shadow-2安装: yarnaddreact-native-svgreact-native-shadow-2使用: import{Shadow}from'react-na......
  • JAVA进阶--常用时间API、包装类、正则表达式、Array类、Lambda表达式、常见算法--202
    第一节 Date日期对象1、日期对象如何创建,如何获取时间毫秒值Datedate=newDate();Longtime=date.getTime();2、时间毫秒值怎么恢复成......
  • 10.业务功能实现---商品服务三级分类树形API
    1.商品服务三级分类树形API实体类,添加属性@Data@TableName("pms_category")publicclassCategoryEntityimplementsSerializable{privatestaticfinallong......