欢迎访问宙启技术站
智能推送

ASP.NET Core怎么在开发环境保存机密User Secrets

发布时间:2023-05-14 22:54:27

在使用ASP.NET Core时,有时我们需要在开发环境中保存一些敏感的信息,比如数据库密码、API密钥等。在开发环境下,我们可以使用User Secrets来保存这些信息。

User Secrets是一个安全存储机制,它将机密信息保存在操作系统的用户临时目录中,而不是将它们保存在代码库中或配置文件中。

下面是一些步骤,介绍如何在ASP.NET Core中使用User Secrets保存机密信息。

步是安装必要的工具。我们需要安装dotnet命令行工具,如果我们已经安装了Visual Studio,这个工具已经自带。如果没有安装,我们可以在Microsoft官网上下载并安装它。

第二步是在项目中启用User Secrets。我们可以通过在项目文件中添加以下内容来启用User Secrets:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UserSecretsId>my-user-secrets-id</UserSecretsId>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.1.0" />
  </ItemGroup>

</Project>

上面的代码会向项目中添加Microsoft.Extensions.Configuration.UserSecrets包。同时,也会配置一个User Secrets ID。这个ID是在操作系统中 的,用于标识该项目的User Secrets。

第三步是添加机密信息。我们可以使用dotnet user-secrets命令添加机密信息。比如,以下命令会将一个名为“DbPassword”的密码添加到已配置的User Secrets ID中:

dotnet user-secrets set "DbPassword" "my-db-password"

我们可以使用以下命令列出已添加到User Secrets中的所有机密信息:

dotnet user-secrets list

第四步是在代码中访问User Secrets。我们可以使用Configuration API来访问User Secrets。以下示例演示如何使用User Secrets中的密码创建一个数据库连接字符串:

using Microsoft.Extensions.Configuration;
using System.Data.SqlClient;

string connString = Configuration.GetConnectionString("DefaultConnection");
SqlConnection conn = new SqlConnection(connString);

在上面的代码中,我们使用Configuration API来获取连接字符串。这个连接字符串定义在appsettings.json文件中,但其中的密码是从User Secrets中获取的。

最后一步是在项目中保护User Secrets。当我们将项目部署到其他环境时,我们需要保护User Secrets,以避免机密信息泄露。一种保护User Secrets的方法是添加以下代码到项目文件中的Target节点中:

<Target Name="PrepublishScript" BeforeTargets="Publish">
  <Exec Command="dotnet user-secrets remove" />
</Target>

上面的代码会在部署之前从操作系统中删除User Secrets。

总结:

在开发ASP.NET Core应用程序时,保存机密信息是一个必须的任务。使用User Secrets可以方便地保存和管理机密信息,并确保它们不会泄露到代码库或配置文件中。在本文中,我们介绍了如何在ASP.NET Core中启用和使用User Secrets,以及如何保护它们。