집 >백엔드 개발 >C#.Net 튜토리얼 >개발 환경에서 ASP.NET Core 저장 비밀(사용자 비밀)의 예 공유
이 글에서는 ASP.NET Core가 개발 환경에서 기밀 사용자 비밀을 우아하게 저장하는 방법을 주로 자세히 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.
서문
애플리케이션 개발 과정에서 암호화 키, 문자열 또는 사용자 이름 비밀번호 등과 같은 일부 기밀 정보를 코드에 저장해야 하는 경우가 있습니다. 일반적인 접근 방식은 config 파일에 저장하는 것입니다. 이전에는 web.config에 저장했지만 ASP.NET Core에서는 이 방법이 변경되었거나 더 다양한 방법이 있습니다. 이러한 기밀 정보를 설정하거나 저장하는 보다 우아한 구성이 있습니다.
처음에는 UserSecrets가 아무 소용이 없다고 생각했습니다. 왜냐하면 무언가를 구성해야 할 경우 appsetting.json 파일에 직접 구성할 수 있었기 때문입니다. 개발 과정에서 진정한 활용성을 느꼈습니다.
디렉터리
사용자 비밀번호 소개
사용자 비밀번호 추가 방법
애플리케이션에서 사용자 비밀 사용
요약
사용자 비밀 소개
이전 코드에서 다음 시나리오를 어떻게 처리했는지 생각해 볼 수 있습니다.
The와 같은 타사 웹사이트에 연결하려면 일부 키를 저장해야 합니다. WeChat 및 Weibo 사이트에서 사용되는 appkey
각 개발자가 일부 리소스에 액세스할 수 있도록 서로 다른 사용자 이름과 비밀번호를 구성합니다
개발 프로세스 중에 다음을 사용하세요. 데이터베이스 주소, 계정 및 비밀번호를 구성하는 방법은 무엇입니까?
마지막 항목을 가정하면 각 개발은 자체 로컬 데이터베이스를 사용해야 합니다. 모든 사람이 자신의 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(); }
in 프로젝트 .json 파일을 보면 사용자 비밀
{ "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 주로 비밀 값을 설정하거나 보는 데 사용됩니다.
사용자 비밀번호를 추가하는 방법
명령줄에서 명령을 사용하여 다음을 추가할 수 있습니다.
이미지
명령줄 창을 프로그램 실행 디렉터리로 전환하고 dotnet user-secrets -h를 입력하여 사용할 수 있는 명령을 확인하세요.
dotnet 사용자 비밀 목록 사용 모든 사용자 비밀 나열
dotnet user-secrets set WeChatAppKey "X3423FEED2435DD"를 사용하여 사용자 비밀. 여기서 WebChatAppKey는 키이고 그 뒤에 값이 옵니다.
그런 다음 dotnet user-secrets list를 사용하여 설정된 키-값 쌍을 확인하세요.
그런 다음 데이터베이스 연결 문자열을 설정합니다.
위는 명령줄을 사용하여 사용자 비밀을 설정하는 것입니다. 명령줄 대신 Visual Studio 2015를 사용하여 이 작업을 수행할 수도 있습니다.
Visual Studio에서 웹 프로젝트를 마우스 오른쪽 버튼으로 클릭하면 사용자 비밀 관리 메뉴가 표시됩니다.
이미지
클릭하여 열면 명령줄에서 방금 설정한 키-값 쌍이 포함된 secrets.json 파일이 나타납니다.
image
어떤 학생들은 이렇게 물을 수도 있습니다. secrets.json에 대한 저장소이므로 이 파일은 어디에 있습니까?
secrets.json은 어디에 저장되어 있나요?
Windows가 아닌 시스템의 경우 저장 위치는
~/.microsoft/usersecrets/<userSecretsId>/secrets.json
입니다. Windows 시스템의 경우 위치는
C:\Users\用户名\AppData\Roaming\Microsoft\UserSecrets\aspnet-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 中对于开发人员还是非常贴心的,很多小细节都考虑到了,因此在我们构建应用程序的过程中,可以多使用这些小功能(特性)来让我们的代码更加的优雅~
【相关推荐】
4. 如何在ASP.NET Core中使用Cookie中间件的详细介绍
5. .Net Core中如何使用ref和Span8742468051c85b06f0a0af9e3e506b5c提高程序性能的实现代码
위 내용은 개발 환경에서 ASP.NET Core 저장 비밀(사용자 비밀)의 예 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!