ASP.NET Core 우아 하 게 개발 환경 에서 기밀 보관(User Secrets)

머리말
응용 프로그램 개발 과정 에서 암호 화 키,문자열,사용자 이름 비밀번호 등 비밀 정 보 를 코드 에 저장 해 야 할 때 가 있 습 니 다.일반적인 방법 은 하나의 프로필 에 저장 하 는 것 입 니 다.이전에 우 리 는 그 를 웹.config 에 저장 하 였 으 나,ASP.NET Core 에 서 는 이러한 방식 이 바 뀌 었 거나,더 많은 다 원 화 된 방법 과 더욱 우아 한 설정 으로 이러한 기밀 자 료 를 설정 하거나 보존 할 수 있 습 니 다.
처음에 저 는 이 UserSecrets 가 아무 소 용이 없다 고 생각 했 습 니 다.제 가 설정 해 야 할 부분 이 있 기 때문에 apptting.json 파일 에 직접 설정 하면 됩 니 다.개발 과정 에서 저 는 그 진정한 용 도 를 느 꼈 습 니 다.
목차
사용자 기밀 소개
사용자 기밀 을 어떻게 추가 합 니까?
응용 프로그램 에서 사용자 기밀 을 사용 하 다.
총화
사용자 기밀 안내
다음 장면 이 있 습 니 다.예전 의 코드 에서 우리 가 어떻게 처 리 했 는 지 생각해 보 세 요.
4.567917.제3자 사이트 와 연 결 된 키 를 저장 해 야 합 니 다.예 를 들 어 위 챗,위 챗 사이트 에서 사용 하 는 appkey4.567917.모든 개발 자 에 게 사용 하지 않 는 사용자 이름 비밀 번 호 를 설정 하여 자원 을 방문 합 니 다개발 자 는 개발 과정 에서 각자 본 기기 의 데이터 베 이 스 를 사용 하고 데이터 베이스 주소,계 정과 비밀 번 호 를 어떻게 설정 합 니까?
마지막 으로 개발 할 때마다 자신의 컴퓨터 데이터 베 이 스 를 사용 해 야 한다 고 가정 하면 모든 사람 이 자신의 웹.config 를 수정 하고 코드 를 제출 할 때 제출 하지 않 으 면 된다 고 말 할 수 있 습 니 다.웹.config 에 다른 설정 항목 을 추가 할 때 웹.config 파일 을 제출 하지 않 는 것 은 불합리 합 니 다.
현재 ASP.NET Core 는 우아 하고 간결 한 방식 으로 User Secrets 를 제공 하여 우리 가 이 일 을 해결 하 는 데 도움 을 주 었 다.
ASP.NET Core 웹 프로그램 을 새로 만 들 때 Startup.cs 파일 에서 다음 코드 를 볼 수 있 습 니 다.

public Startup(IHostingEnvironment env) 
{
  .....

  if (env.IsDevelopment())
  {
    builder.AddUserSecrets();
  }
  
  builder.AddEnvironmentVariables();
}

procject.json 파일 에서 User Secrets 와 관련 된 설정 을 볼 수 있 습 니 다.

{
  "userSecretsId": "aspnet-WebAppCore-e278c40f-15bd-4c19-9662-541514f02f3e"
  ...
  
  "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
  "Microsoft.Extensions.SecretManager.Tools": “1.0.0-preview2-final”
}
builder.addUser Secrets 라 는 코드 를 볼 수 있 습 니 다.그 는 개발 환경 에서 실행 되 었 습 니 다.
userSecretsId 는 항목 을 표시 하 는 User Secrets 의 유일 성 으로 두 항목 이 서로 다른 Secrets 를 사용 해 야 한다 면 서로 다른 userSecretsId 가 필요 하 다.
Microsoft.Extensions.SecretManager.Tools 는 주로 secrets 의 값 을 설정 하거나 보 는 데 사 용 됩 니 다.
어떻게 사용자 기밀 을 추가 합 니까?
명령 줄 에 명령 을 사용 하여 추가 할 수 있 습 니 다:
image
  • 명령 행 창 을 프로그램의 실행 디 렉 터 리 로 전환 하고 dotnet user-secrets-h 를 입력 하여 사용 할 수 있 는 명령 을 봅 니 다
  • dotnet user-secrets list 를 사용 하여 모든 사용자 기밀 을 표시 합 니 다
  • dotnet user-secrets set WeChatAppKey"X3423FEED2435DD"를 사용 하여 사용자 기밀 을 설정 합 니 다.그 중에서 WebChatAppKey 를 키 로 하고 뒤의 값 은 값 입 니 다
  • 그리고 dotnet user-secrets list 를 사용 하여 설정 한 키 쌍 을 봅 니 다
  • 4.567917.그리고 나 는 데이터 뱅 크 의 연결 문자열 을 설정 했다이상 은 명령 행 방식 으로 사용자 기밀 을 설정 하고 명령 행 대신 Visual Studio 2015 를 사용 할 수 있 습 니 다.
    Visual Studio 에서 웹 프로젝트 에서 오른쪽 단 추 를 누 르 면 사용자 기밀 을 관리 하 는 메뉴 를 볼 수 있 습 니 다.
    image
    열 려 면 누 르 면 secrets.json 파일 이 나타 납 니 다.명령 행 에 설 치 된 키 쌍 입 니 다.
    image
    어떤 학우 들 은 secrets.json 에 저 장 된 이상 이 파일 은 어디 에 있 습 니까?
    secrets.json 의 저장 위치?
    비 윈도 시스템 에서 저장 위치 는
    ~/.microsoft/usersecrets//secrets.json
    윈도 시스템 에서 그 위 치 는
    C:\\\Users\\사용자 이름\AppData\\Roaming\\Microsoft\\UserSecrets\\aspnet-webAppCore-e278c40f-15bd-4c19-9662-541514f02f3e
    저 장 된 상위 폴 더 는 procject.json 파일 의 userSecretsId 가 설정 한 값 입 니 다.
    응용 프로그램 에서 사용자 기밀 을 사용 하 다.
    프로그램 에서 설 정 된 사용자 기밀 에 접근 하려 면 procject.json 파일 에 의존 항목 이 존재 하 는 지 확인 해 야 합 니 다.
    Microsoft.Extensions.Configuration.UserSecrets 및 builder.AddUserSecrets().
    그리고 Startup.cs 파일 에서 Configuration 대상 을 통 해 접근 합 니 다.
    
    public IConfigurationRoot Configuration { get; }
    public void ConfigureServices(IServiceCollection services)
    {
      var wechatKey = Configuration["WeChatAppKey"]
    }
    
    사용자 기밀 을 C\#클래스 파일 에 표시 하기 위해 DI 를 사용 할 수 있 습 니 다.이렇게
    secrets.json
    
    {
      "SecretsKeys":
      {
        WeCharAppKey:"xxejfwert3045",
        WeboAppKey:"35402345lkefgjlkdfg",
        .....
      }
    }
    
    SecretsKeysConfig.cs
    
    public class SecretsKeysConfig
    {
      public string WeCharAppKey { get; set;}
      
      public string WeboAppKey { get; set;}
      
      // ......
    }
    Startup.cs
    
    public void ConfigureServices(IServiceCollection services)
    {
      services.Configure<SecretsKeysConfig>(Configuration.GetSection("SecretsKeys"));
      
      //     
    }
    
    HomeController.cs
    
    public class HomeController : Controller
    {
      public SecretsKeysConfig AppConfigs { get; }
      public HomeController(IOptions<SecretsKeysConfig> appkeys)
      {
        AppConfigs = appkeys.Value;
      }
    
    }
    
    
    메모:appsetting.json 파일 에 secrets.json 파일 과 같은 노드(충돌)의 설정 항목 이 있 으 면 secrets.json 의 설정 항목 에 덮어 씁 니 다.builder.AddUserSecrets()가 AddJSon File("appsettings.json")보다 늦게 등록 되 었 기 때 문 입 니 다.그러면 우 리 는 이 특성 을 이용 하여 모든 개발 자의 기계 에 데이터베이스 연결 문자열 을 다시 설정 할 수 있다.
    총결산
    이상 은 마이크로소프트 가 ASP.NET Core 에서 개발 자 에 게 매우 친절 하 다 는 것 을 느 낄 수 있 습 니 다.많은 세부 사항 을 고려 했 기 때문에 우리 가 응용 프로그램 을 구축 하 는 과정 에서 이런 작은 기능(특성)을 많이 사용 하여 우리 의 코드 를 더욱 우아 하 게 할 수 있 습 니 다~
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기