찾다
백엔드 개발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 中对于开发人员还是非常贴心的,很多小细节都考虑到了,因此在我们构建应用程序的过程中,可以多使用这些小功能(特性)来让我们的代码更加的优雅~

【相关推荐】

1. ASP.NET免费视频教程

2. 详细介绍ZKEACMS for .Net Core

3. 在.net core 下如何进行http请求?

4. 如何在ASP.NET Core中使用Cookie中间件的详细介绍

5. .Net Core中如何使用ref和Span提高程序性能的实现代码

위 내용은 개발 환경에서 ASP.NET Core 저장 비밀(사용자 비밀)의 예 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
如何在 Windows 11 中启用 Core Isolation 的内存完整性功能如何在 Windows 11 中启用 Core Isolation 的内存完整性功能May 10, 2023 pm 11:49 PM

Microsoft的Windows112022Update(22H2)默认启用CoreIsolation的内存完整性保护。但是,如果您运行的是旧版本的操作系统,例如Windows112022Update(22H1),则需要手动打开此功能。在Windows11中开启CoreIsolation的内存完整性功能对于不了解核心隔离的用户,这是一个安全过程,旨在通过将Windows上的基本核心活动隔离在内存中来保护它们免受恶意程序的侵害。该进程与内存完整性功能相结合,可确保

电脑core是什么意思电脑core是什么意思Sep 05, 2022 am 11:24 AM

电脑中core有两种意思:1、核心,也即内核,是CPU最重要的组成部分,CPU所有的计算、接受存储命令、处理数据都由核心执行;2、酷睿,core是英特尔的处理器名称,酷睿是英特尔公司继奔腾处理器之后推出的处理器品牌,目前已经发布了十二代酷睿处理器。

如何修复 Windows 11 / 10 中的处理器热跳闸错误 [修复]如何修复 Windows 11 / 10 中的处理器热跳闸错误 [修复]Apr 17, 2023 am 08:13 AM

大多数设备(例如笔记本电脑和台式机)长期被年轻游戏玩家和编码人员频繁使用。由于应用程序过载,系统有时会挂起。这使用户被迫关闭他们的系统。这主要发生在安装和玩重度游戏的玩家身上。当系统在强制关闭后尝试启动时,它会在黑屏上抛出一个错误,如下所示:以下是在此引导期间检测到的警告。这些可以在事件日志页面的设置中查看。警告:处理器热跳闸。按任意键继续。..当台式机或笔记本电脑的处理器温度超过其阈值温度时,总是会抛出这些类型的警告消息。下面列出了在Windows系统上发生这种情况的原因。许多繁重的应用程序在

docker挂载目录权限问题怎么解决docker挂载目录权限问题怎么解决Feb 29, 2024 am 10:04 AM

在Docker中,挂载目录的权限问题通常可以通过以下方法解决:使用-v参数指定挂载目录时添加权限相关的选项。可以通过在挂载的目录后面添加:ro或:rw来指定挂载目录的权限,分别表示只读和读写权限。例如:dockerrun-v/host/path:/container/path:roimage_name在Dockerfile中定义USER指令来指定容器中运行的用户,以确保容器内部的操作符合权限要求。例如:FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

CORE币值得长期持有吗?CORE币值得投资吗?CORE币值得长期持有吗?CORE币值得投资吗?Feb 29, 2024 pm 05:34 PM

CORE币:值得长期持有吗?CORE币是一个基于工作量证明(PoW)共识机制的加密货币,由Core团队在2018年创立。其目标是建立一种安全、高效、可扩展的数字货币体系,被广泛应用于支付和价值储存。CORE币的设计旨在提供一种去中心化的支付解决方案,为用户提供更多的隐私保护和交易便利性。CORE币的优势安全:CORE币基于工作量证明共识机制,具有很强的安全性。高效:CORE币的交易速度快,每秒可处理数千笔交易。可扩展:CORE币的区块容量大,可支持大量交易。去中心化:CORE币是一个去中心化的加

在linux下core是什么在linux下core是什么Mar 23, 2023 am 10:00 AM

在linux下core是一个内存映像,同时加上调试信息;在linux下遇到程序异常退出或者中止,我们都会使用core文件进行分析,其中包含了程序运行时的内存、寄存器、堆栈指针等信息,格式为ELF,可以理解是程序工作当前状态转储成一个文件。

.NET Core跨平台应用开发实战:从Windows到Linux与macOS的无缝之旅.NET Core跨平台应用开发实战:从Windows到Linux与macOS的无缝之旅Feb 26, 2024 pm 12:55 PM

随着.NETCore的推出,.NET开发者迎来了全新的机遇,可以在多个操作系统上轻松编写和运行.NET应用程序。本文将深入探讨如何利用.NETCore实现跨平台应用开发,并分享在Windows、Linux和macOS等操作系统上的最佳实践经验。一、准备开发环境要开始跨平台应用开发,首先需要为每个目标平台准备好开发环境。Windows在Windows上,你可以通过VisualStudio来安装.NETCoreSDK。安装完成后,你可以通过VisualStudio创建和运行.NETCore项目。Li

IFA 2024 | Core Ultra Series 2: In Lunar Lake, Intel introduces its most efficient x86 CPU yetIFA 2024 | Core Ultra Series 2: In Lunar Lake, Intel introduces its most efficient x86 CPU yetSep 04, 2024 am 06:38 AM

Roughly one year after announcing the Core Ultra Series 1, also known as Meteor Lake, Intel follows up with the second generation. Core Ultra Series 2 aka Lunar Lake was already introduced at June's Computex. At IFA, the final launch of the Core Ultr

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!