代码之家  ›  专栏  ›  技术社区  ›  MountainConqueror

在我的公共git respository中公开为“string”的api密钥

  •  1
  • MountainConqueror  · 技术社区  · 6 年前

    我的git respository中有这样的代码,但这不是一个好主意,因为我的api密钥是以字符串形式公开的,每个人都可以看到它。

    所以我的问题是我该如何处理这个问题是否应将此API密钥保存到*.txt文件并导入此字符串?。然后将此txt文件添加到.gitignore文件中?

    你能提出解决这个问题的正确方法吗?

    import axios from 'axios';
    
    export const FETCH_LOCATION = 'FETCH_LOCATION';
    export const FETCH_WEATHER = 'FETCH_WEATHER';
    export const HISTORY_SELECTED = 'HISTORY_SELECTED';
    export const SHOW_INFO = 'SHOW_INFO';
    const API_KEY_GOOGLE = 'string';
    const API_KEY_WUNDERGROUND = 'string';
    
    export function fetchLocation(city) {
      const urlGoogle = `https://maps.googleapis.com/maps/api/geocode/json?address=${city}&key=${API_KEY_GOOGLE}`;
      const request = axios.get(urlGoogle);
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   leogoesger    6 年前

    通常的做法是 .env 文件,并忽略 .env环境 在gitignore你将把这些文件加载到 process.env 是的。您可以使用名为 dotenv 是的。

    例如,如果我需要一个google api,我会创建一个文件调用 .env环境 ,然后像这样存储

    GOOGLEAPIKEY=asdfewvger343sdfasdf 
    

    如果你把它装上 webpack ,然后将其添加为插件

    import DotEnvPlugin from 'webpack-dotenv-plugin';
    
    plugins: [
        new DotenvPlugin({
          sample: './.env.default',
          path: './.env.dev',
        }),
    ... 
    ]
    

    或者你可以用 dotenv公司

    require('dotenv').config()
    

    这将加载 .env环境 从你的根目录文件没有配置。

    了解更多有关此的信息 https://github.com/motdotla/dotenv

    在你的应用程序中,你将使用GoogleAPI,比如 process.env.GOOGLEAPIKEY

     const data = await axios
          .post(`localhost:3000/api/helloworld/${process.env.GOOGLEAPIKEY}`)
          .send(data.fetchData);