본문 바로가기
ASP.NET Core

.NET 6] user-secrets(secrets.json) 사용하여 ConnectionStrings 계정 관리하기

by Fastlane 2022. 6. 16.
728x90
반응형

1. ConnectionStrings를 appsettings.Development.json에서 관리하는 경우 

appsettings.Development.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },  
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost,1433;database=CommandDb;uid=sa;pwd=;"
  }
}

Program.cs

var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
    EnvironmentName = Environments.Development
});


builder.Services.AddDbContext<AppDbContext>(opt => opt.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

var app = builder.Build();

app.Run();

2. ConnectionStrings의 계정정보를 secrets.json에서 관리하는 경우 

appsettings.Development.json

계정정보 없이 아래와 같이 세팅한다. 

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },  
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost,1433;Initial Catalog=CommandDb"
  }
}

 

secrets.json 파일을 생성하고, 계정정보를 세팅한다. 

PS C:\Users\admin\source\repos\SixMinAPI> dotnet user-secrets init
Set UserSecretsId to '7a9015d1-021b-412e-8c37-cc7574c1d25b' for MSBuild project 'C:\Users\admin\source\repos\SixMinAPI\SixMinAPI.csproj'.
PS C:\Users\admin\source\repos\SixMinAPI> dotnet user-secrets set "UserId" "sa"
Successfully saved UserId = sa to the secret store.
PS C:\Users\admin\source\repos\SixMinAPI> dotnet user-secrets set "Password" "12345"  
Successfully saved Password = 12345 to the secret store.

 

.csproj 파일에 UserSecretsId Property가 자동 추가된다. 

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <UserSecretsId>7a9015d1-021b-412e-8c37-cc7574c1d25b</UserSecretsId>
  </PropertyGroup>

 

secrets.json 파일을 아래 경로에서 확인 가능하다. 

%APPDATA%\Microsoft\UserSecrets\<user_secrets_id>\secrets.json

 

secrets.json 

{
  "UserID": "sa",
  "Password": "12345"
}

 

Program.cs

secrets.json에 저장된 계정정보를 가져와서 sql server와 연결처리 한다. 

var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
    EnvironmentName = Environments.Development
});


var sqlConBuilder = new SqlConnectionStringBuilder();

sqlConBuilder.ConnectionString = builder.Configuration.GetConnectionString("DefaultConnection");
sqlConBuilder.UserID = builder.Configuration["UserID"];
sqlConBuilder.Password = builder.Configuration["Password"];


builder.Services.AddDbContext<AppDbContext>(opt => opt.UseSqlServer(sqlConBuilder.ConnectionString));
var app = builder.Build();

app.Run();

 

728x90
반응형

댓글