以纯文本形式存储密码是不安全的。 例如,存储在中的数据库连接字符串 appsettings.json 可能包含指定用户的
密码:
{	"ConnectionStrings": {		"Movies": "Server=(localdb)\\mssqllocaldb;Database=Movie-1;
User Id=johndoe;Password=pass123;MultipleActiveResultSets=true" }}
更安全的方法是将密码存储为机密。 例如:
dotnet user-secrets set "DbPassword" "pass123"
Password 从中的连接字符串中移除键值对 appsettings.json 。 例如:

{
"ConnectionStrings": {
"Movies": "Server=(localdb)\\mssqllocaldb;Database=Movie-1;

User Id=johndoe;MultipleActiveResultSets=true"
}
}

可以对对象的属性设置机密的值 SqlConnectionStringBuilder Password ,以完成连接字符串:
using System.Data.SqlClient; 
var builder = WebApplication.CreateBuilder(args);
var conStrBuilder = new SqlConnectionStringBuilder
(builder.Configuration.GetConnectionString("Movies"));
conStrBuilder.Password = builder.Configuration["DbPassword"];
var connection = conStrBuilder.ConnectionString;
var app = builder.Build();
app.MapGet("/", () => connection);
app.Run();
列出机密
假设文件上的应用 secrets.js 包含以下两个机密:

{
"Movies": {
"ServiceApiKey": "12345",
"ConnectionString":

"Server=(localdb)\\mssqllocaldb;Database=Movie- 1;

Trusted_Connection=True;MultipleActiveResultSets=true"
}
}

从项目文件所在的目录运行以下命令:
dotnet user-secrets list
随即显示以下输出
Movies:ConnectionString = Server=(localdb)\mssqllocaldb;Database=Movie- 1;
Trusted_Connection=True;
MultipleActiveResultSets=true Movies:ServiceApiKey = 12345
在前面的示例中,键名称中的冒号表示 机密 json 中的对象层次结构。
 
删除单个机密
假设文件上的应用 secrets.js 包含以下两个机密:
{ 
"Movies": {
  "ServiceApiKey": "12345",
  "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=Movie- 1;
  Trusted_Connection=True;MultipleActiveResultSets=true" }
}
从项目文件所在的目录运行以下命令:
dotnet user-secrets remove "Movies:ConnectionString"
已修改应用的 机密 json 文件,以删除与密钥关联的键值对 MoviesConnectionString :
{ "Movies": { "ServiceApiKey": "12345" } }
删除所有机密 -- 从项目文件所在的目录运行以下命令:
若要在 Visual Studio 中管理用户机密,请在解决方案资源管理器中右键单击项目,然后选择 "管理用户机密"
 
dotnet user-secrets clear

 利用 VisualStudio 管理用户机密

appsettings.json用机密替换字符串-利用 VisualStudio 管理用户机密的更多相关文章

  1. 在Asp.NET Core中如何优雅的管理用户机密数据

    在Asp.NET Core中如何优雅的管理用户机密数据 背景 回顾 在软件开发过程中,使用配置文件来管理某些对应用程序运行中需要使用的参数是常见的作法.在早期VB/VB.NET时代,经常使用.ini文 ...

  2. Word 查找和替换字符串方法

    因为项目需要通过word模板替换字符串 ,来让用户下载word, 就在网上找了找word查找替换字符串的库或方法,基本上不是收费,就是无实现,或者方法局限性太大 .docx 是通过xml来存储文字和其 ...

  3. 在.NET Core console application中使用User Secrets(用户机密)

    微软很坑地只在Microsoft.NET.Sdk.Web中提供了VS项目右键菜单的"管理用户机密"/"Manage User Secrets"菜单项,在使用Mi ...

  4. Logstash替换字符串,解析json数据,修改数据类型,获取日志时间

    在某些情况下,有些日志文本文件类json,但它的是单引号,具体格式如下,我们需要根据下列日志数据,获取正确的字段和字段类型 {'usdCnyRate': '6.728', 'futureIndex': ...

  5. JS 利用正则表达式替换字符串

    JS 利用正则表达式替换字符串 博客分类: JavaScript 学习资料 Java代码 收藏代码 JS 利用正则表达式替换字符串 var data = "123123,213,12312, ...

  6. php查询mysql中的json编码后的字符串内容的方法

    问题 mysql里存的是json编码后的字符串,其中中文会被转为unicode码,所以直接查询是查询不到的. mysql里的查询如 like "%\u6211\u662f%" 也是 ...

  7. ASP .NET CORE 根据环境变量支持多个 appsettings.json

    0.背景 在开发项目的过程当中,生产环境与调试环境的配置肯定是不一样的.拿个最简单的例子来说,比如连接字符串这种东西,调试环境肯定是不能连接生产数据库的.在之前的话,这种情况只能说是你 COPY 两个 ...

  8. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  9. 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发

    每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...

  10. ASP.NET Core appsettings.json 文件

    ASP.NET Core appsettings.json 文件 在本节中,我们将讨论 ASP.NET Core 项目中appsettings.json文件的重要性. 在以前的 ASP.NET 版本中 ...

随机推荐

  1. Redis基本操作(2)

    一.list类型 列表的元素类型为string 按照插⼊顺序排序 增加.修改 例1:在左侧插⼊数据 lpush key value1 value2 ... 例2:在右侧插⼊数据 rpush key v ...

  2. 12、HSSFWorkbook实现多张sheet导出

    转载自 一.封装一个通用的装载数据的实体类: import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsCon ...

  3. screenfetch—最炫酷的查看你的设备信息

    screenfetch是一个很方便的并且很炫酷的一个程序,它可以做到很炫酷的输出你想要看到的系统信息. 只需要短短一行命令,就可以快速的安装上它.! 并且可以直观的显示出来,当前设备的信息.

  4. Html飞机大战(十八): 模块化+项目开源

    好家伙,好久好久没有更新这个系列了   为了使文档更方便阅读,使代码更容易维护,来把这个飞机大战模块化 项目已开源: https://gitee.com/tang-and-han-dynasties/ ...

  5. session取不到值

    今天鼓捣项目时出现了一个问题 项目重启后,设置session值后,第一次请求经过过滤器时 session取不到值,导致被拦截 经过半天的研究,终于...我请教了别人 把代码给了朋友,在朋友一段时间的琢 ...

  6. 《Effective C++》实现 章节

    Item26:尽可能延后变量定义式的出现时间 Item27:尽量少做转型动作 关于这一点,专门开了一个新的总结: http://blog.csdn.net/m0_37316917/article/de ...

  7. P8775 [蓝桥杯 2022 省 A] 青蛙过河

    简要题意 有一只青蛙在 \(1\) 处,有一些石头,位于 \(2,3,4,\cdots n\),它们的高度是 \(H_2,H_3,\cdots,H_n\).青蛙每落一次石头,该石头的高度就会 \(-1 ...

  8. vue3+quasar+capacitor开发多平台项目,使用cordova和capacitor插件(支持所有前端框架)

    先看文档 框架文档地址:https://quasar.dev/start/quasar-cli 创建项目 npm init quasar 运行与打包命令 npx quasar dev npx quas ...

  9. python paramiko通过远程操作linux

    python-paramiko通过远程操作linux 1. python-paramiko通过远程操作linux python3 远程操作linux 使用第三方paramiko库,对于实现运维自动部署 ...

  10. final关键字用于修饰类-final关键字用于修饰成员方法

    final关键字与四种用法 概念 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容容,比如,方法重写.那么我们能不能随意的继承 API中提供的类,改写其内容呢?显然这是不合适的.为了避免这种 ...