Cómo agregar secretos de usuario en una aplicación de consola .NET Core

 C Programming >> Programación C >  >> Tags >> .NET
Cómo agregar secretos de usuario en una aplicación de consola .NET Core

La función User Secrets en .NET Core es una forma segura y sencilla de anular valores en appsettings.json. Los valores anulados solo existen en un archivo que se encuentra en su propio entorno de desarrollo, por lo que no los envía accidentalmente a su repositorio de control de código fuente.

Esta característica está habilitada en ASP.NET de manera predeterminada y el marco hace la mayor parte del trabajo por usted. Pero, ¿qué sucede si desea agregar User Secrets a una aplicación de consola o cualquier otro tipo de proyecto además de ASP.NET?

Hay algunos pasos más necesarios para que los secretos de usuario funcionen en un proyecto que no sea ASP.NET. Este artículo explica cómo agregar y usar los secretos de usuario en un proyecto de aplicación de consola.

1:agregue el paquete Microsoft.Extensions.Configuration.UserSecrets

Ejecute lo siguiente en la Consola del administrador de paquetes (Ver> Otras ventanas> Consola del administrador de paquetes).

Install-Package Microsoft.Extensions.Configuration.UserSecrets
Code language: PowerShell (powershell)

Esto agregará la referencia del paquete con la última versión a su archivo .csproj.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0" />
  </ItemGroup>
</Project>


Code language: HTML, XML (xml)

2 – Agregar secretos.json

  • Haga clic derecho en el proyecto> haga clic en Administrar secretos de usuario .
  • Esto crea el archivo secrets.json y lo abre.

En este punto, es solo un archivo JSON vacío:

{

}
Code language: JSON / JSON with Comments (json)

3 – Anular la configuración de appsettings.json en secrets.json

Digamos que su appsettings.json se ve así:

{
  "ApiKey": "1234",
  "Enabled": true,
  "Timeout": 5000,
  "ConnectionStrings": {
    "DefaultDB": "Data Source=ProdServer;Initial Catalog=StocksDB;Integrated Security=SSPI"
  }
}

Code language: JSON / JSON with Comments (json)

Y desea anular ConnectionStrings. En secrets.json, pon lo siguiente:

{
  "ConnectionStrings": {
    "DefaultDB": "Data Source=localhost;Initial Catalog=StocksDB;Integrated Security=SSPI"
  }
}

Code language: JSON / JSON with Comments (json)

Puede anular cualquier configuración de appsettings.json agregando a secrets.json.

4 – Llamar a AddUserSecrets()

Llame a ConfigurationBuilder.AddUserSecrets(). Esto hace que cargue el archivo de secretos de usuario que agregó en los pasos anteriores. Cualquier configuración que anuló estará disponible cuando use el objeto Configuración.

Nota:Esto supone que ya está usando ConfigurationBuilder y appsettings.json. Si esto no le resulta familiar, consulte este artículo que explica cómo leer desde appsettings.json en una aplicación de consola.

using Microsoft.Extensions.Configuration;
class Program
{
	static void Main(string[] args)
	{
		var config = new ConfigurationBuilder()
			.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
			.AddJsonFile("appsettings.json")
			.AddUserSecrets<Program>()
			.Build();



		var conString = config.GetConnectionString("DefaultDB");

		Console.WriteLine(conString);
	}
}
Code language: C# (cs)

Cuando ejecuta esto, genera la cadena de conexión de secrets.json:

Data Source=localhost;Initial Catalog=StocksDB;Integrated Security=SSPICode language: plaintext (plaintext)