错误必须提供“ClientId”选项。构建 docker 镜像时

Woo*_*oot 11 docker .net-core

我启动了一个新的 .net 核心项目,并将其配置为使用 Google+ Api 进行身份验证。我的客户端 ID 和机密使用 dotnet 用户机密存储。当我构建我的 docker 镜像时,我得到

 Unhandled Exception: System.ArgumentException: The 'ClientId' option must be provided.
Run Code Online (Sandbox Code Playgroud)

我知道这是因为我的秘密没有被提供给图像。我想知道的是如何在不将它们提交到存储库的情况下提供我的 Id 和密钥,并且仍然在本地运行我的图像。

我在想,当我将它部署到服务器时,我可以将它们作为 Env 变量的一部分,我想我也可以在本地做到这一点,只是想知道是否有其他人对此有一个可能比我更优雅的解决方案。

我只是找不到关于其他人如何做的太多信息。

Has*_*man 12

要添加 Google+ 身份验证,您可以查看本指南

在 startup.cs 中添加此代码段

services.AddAuthentication().AddGoogle(googleOptions =>
{
    googleOptions.ClientId = Configuration["Authentication:Google:ClientId"];
    googleOptions.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
});
Run Code Online (Sandbox Code Playgroud)

在 appsettings.json 中添加这一行

"Authentication": {
    "Google": {
        "ClientId": "ID FROM GOOGLE API",
        "ClientSecret": "SECRET FROM GOOGLE API"
}
Run Code Online (Sandbox Code Playgroud)


Set*_*Set 8

首先,秘密不是您应该用于部署的。通过帮助防止敏感数据存储在代码中/签入源代码控制,在开发过程中存在安全存储的秘密。请参阅相关问题UserSecrets 如何在云中工作?

您是对的,您应该使用环境变量来代替或替代某些外部设置存储,例如 DB。