>  기사  >  백엔드 개발  >  Core가 ASP.NET의 개발 환경에서 비밀(사용자 비밀)을 우아하게 저장하는 방법에 대한 자세한 설명

Core가 ASP.NET의 개발 환경에서 비밀(사용자 비밀)을 우아하게 저장하는 방법에 대한 자세한 설명

黄舟
黄舟원래의
2017-05-28 10:14:551720검색

이 글에서는 ASP.NET Core가 개발 환경에서 사용자 비밀을 우아하게 저장하는 방법을 주로 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.

서문

개발 과정에서 가끔 암호화 키, 문자열, 사용자 이름 및 비밀번호와 같은 일부 기밀 정보를 코드에 저장해야 합니다. 일반적인 접근 방식은 구성 파일에 저장하는 것입니다. 이전에는 web.config에 저장했지만 ASP.NET Core에서는 이 방법이 변경되었거나 더 다양하고 우아한 방법이 있을 수 있습니다. 이러한 기밀 정보를 설정하거나 저장하는 구성입니다.

처음에는 이 UserSecrets가 쓸모가 없다고 생각했습니다. 왜냐하면 무언가를 구성해야 할 경우 appsetting.json 파일에 직접 구성할 수 있기 때문입니다. 사용.

목차

  • 사용자 비밀 소개

  • 사용자 비밀 추가 방법

  • 앱에서 사용자 비밀 사용

  • 요약

사용자 기밀 소개

이전 코드에서 어떻게 처리했는지 시나리오를 생각해 볼 수 있습니다.

  • WeChat 및 Weibo 사이트에서 사용되는 앱 키와 같이 타사 웹 사이트에 연결하기 위해 일부 키를 저장해야 합니다. 각 개발자는 일부 리소스에 액세스하기 위해 서로 다른 사용자 이름과 비밀번호를 구성합니다

  • 개발자는 개발 프로세스 중에 자신의 로컬 데이터베이스를 사용합니다. 데이터베이스 주소, 계정 및 비밀번호를 구성하는 방법


  • 마지막 항목을 각각 가정합니다. 개발을 위해 자신의 로컬 데이터베이스를 사용하려면 모든 사람이 자신의 web.config를 수정하고 코드를 제출할 때 이를 제출하지 않아야 한다고 말할 수 있습니다. 따라서 web.config에 다른 구성 항목을 추가하는 경우 web.config 파일을 제출하지 않는 것은 분명히 불합리합니다.

  • 이제 ASP.NET Core는 이 문제를 해결하는 데 도움이 되는 매우 우아하고 간결한 사용자 비밀 방법을 제공합니다.

새 ASP.NET Core 웹 애플리케이션을 생성하면

Startup.cs

파일에 다음 코드가 표시됩니다.

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

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

project.json
파일에 사용자 비밀 일부 관련 항목이 표시됩니다. Configurations

{
  "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.AddUserSecrets
코드 라인을 볼 수 있습니다.

userSecretsId는 프로젝트의 사용자 비밀을 고유하게 식별하는 데 사용됩니다. 서로 다른 비밀을 사용해야 하는 두 프로젝트가 있는 경우 서로 다른 userSecretsId가 있어야 합니다.

Microsoft.Extensions.SecretManager.Tools 주로 비밀 값을 설정하거나 보는 데 사용됩니다.

사용자 비밀을 추가하는 방법

명령줄에서 명령을 사용하여 다음을 추가할 수 있습니다.

image


명령줄 창을 프로그램의 실행 디렉터리로 전환하고

dotnet user-secrets를 입력합니다. -h
    사용할 수 있는 명령 보기
  • dotnet user-secrets 목록 사용
  • 모든 사용자 비밀 나열
  • dotnet user-secrets set WeChatAppKey "X3423FEED2435DD" 사용
  • 사용자 비밀 설정, 여기서 WebChatAppKey는 키, 값은 다음과 같습니다.
  • 그런 다음

    dotnet user-secrets list
  • 를 사용하여 설정된 키-값 쌍을 확인하세요.
  • 그런 다음 데이터베이스 연결 문자열을 설정합니다.

  • 위는 명령줄을 사용하여 사용자 비밀을 설정하는 것입니다. 명령줄 대신 Visual Studio 2015를 사용하여 이 작업을 수행할 수도 있습니다.

  • Visual Studio에서 웹 프로젝트를 마우스 오른쪽 버튼으로 클릭하면
Manage user secrets

메뉴가 표시됩니다.

image

클릭하여 열면 secrets.json 파일이 나타납니다. 명령줄에서 방금 생성한 파일 키-값 쌍 설정:


image


일부 학생들은 secrets.json에 저장되어 있기 때문에 질문할 수 있습니다. 이 파일은 어디에 있습니까?

secrets.json은 어디에 저장되어 있나요?

Windows가 아닌 시스템에서 저장 위치는

~/.microsoft/usersecrets/291d8de402df09abb5ccc62c3f9cde7e/secrets.json

Windows 시스템에서 해당 위치는

C:Users입니다. usernameAppDataRoamingMicrosoftUserSecretsaspnet-WebAppCore-e278c40f-15bd-4c19-9662-541514f02f3e

저장된 상위 폴더가
project.json
파일의

userSecretsId에 설정된 값인 것을 확인할 수 있습니다.

앱에서 사용자 비밀을 사용하세요

要在应用程序中访问配置的用户机密,你需要保证project.json文件中存在依赖项:
Microsoft.Extensions.Configuration.UserSecrets 并且builder.AddUserSecrets()。

然后在Startup.cs文件中通过 Configuration 对象访问


public IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
  var wechatKey = Configuration["WeChatAppKey"]
}

你可以使用DI来将用户机密映射到一个C#类文件,像这样

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()晚于 AddJsonFile("appsettings.json")注册, 那么我们可以利用这个特性来在每个开发人员的机器上重新设置数据库连接字符串了。

总结

以上,或许可以感受到微软在 ASP.NET Core 中对于开发人员还是非常贴心的,很多小细节都考虑到了,因此在我们构建应用程序的过程中,可以多使用这些小功能(特性)来让我们的代码更加的优雅~

위 내용은 Core가 ASP.NET의 개발 환경에서 비밀(사용자 비밀)을 우아하게 저장하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.