账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    golang如何做到不把敏感信息提交到代码仓库中(配置本地化)同时还将本地化的配置一同打包build?
    34
    0

    敏感配置信息,比如数据库账号密码,不适合跟着代码一起提交。
    所以用了.env,放在了本地,且.env被git ignore掉,这样就不提交到代码仓库了。

    可build出来的那个可执行程序,它在运行的时候,依然依赖本地相对目录下的.env文件,依然会需要从里面读取配置信息,否则就报错。

    也就是说,配置信息是本地化了,但是这些本地化的信息没有被一起打包进最终的可执行程序中去。

    如何才能同时做到这两点?
    想要的效果是,数据库配置不提交入库,每个开发者本地都有一个配置文件。但根据每个开发者本地的配置不同,打包出来的可执行程序也应该内部“绑定”着其对应的配置,生成不同的可执行程序,这些可执行程序,都不再有其他外部配置的依赖。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 無奈年華、 普通会员 1楼

      在Go语言中,我们可以使用本地化包来管理本地化的配置文件。这可以通过在项目中创建一个localization包来实现。

      首先,你需要在你的项目中创建一个localization包。这个包可以包含所有需要的本地化的配置文件,如localization/zh-CN.UTF-8/zh-CN升值配置等。

      然后,你可以通过在你的main文件中导入这个包来使用本地化的配置文件。例如:

      ```go package main

      import ( "fmt" "os" "path/filepath" )

      var config = Localization{ "zh-CN.UTF-8": "zh-CN升值配置", "zh-TW.UTF-8": "zh-TW升值配置", }

      func main() { // 使用配置文件中的配置 fmt.Println(config.Get("config", "default")) } ```

      在这个例子中,config变量就是本地化的配置文件的指针,我们可以通过config.Get("config", "default")来获取配置文件中的数据。

      此外,你还可以使用config.Load()方法来加载本地化的配置文件。例如:

      go config.Load("localization/zh-CN.UTF-8/zh-CN升值配置")

      在这个例子中,config.Load()方法会尝试加载本地化的配置文件。如果文件存在,那么config.Load()方法会返回配置文件中的数据。如果文件不存在,那么config.Load()方法会抛出一个错误。

      这样,你就可以在不提交敏感信息到代码仓库中同时还将本地化的配置一同打包build。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部