AptNetCore使用Secrets管理私密数据

前言

在项目中, 数据库连接, 账户及密码等如果存储在appsetting.json中就太不安全了, 所以生产时都是放在环境变量中读取的.

在开发中可能存在每一台开发机用到的一些变量都不一样的情况, 这个时候如果写在appsettings.Development.json中每次提交版本控制就不方便了.

所以dotnet-cli贴心的提供了 user-secrets 命令, 来管理开始时用户的私密数据.

使用

设置UserSecretsId

在项目根目录输入 dotnet user-secrets list, 可以看到错误提示

Could not find the global property 'UserSecretsId' in MSBuild project '/home/xueyou/website-demo/website-demo.csproj'. Ensure this property is set in the project or use the '--id' command line option.

这提示我们, 要想使用Secrets管理机密, 需先定义UserSecretsId

并且根据上面的提示可以知道, 它在.csproj文件中寻找UserSecretsId, 那我们就在此文件中定义UserSecretsId

编辑.csproj文件在PropertyGroup内增加<UserSecretsId>79a3edd0-2092-40a2-a04d-dcb46d5ca9ed</UserSecretsId>

UserSecretsId值是GUID生成的, 每一个值都会实际对应到文件夹的名称上

  • windows中, %APPDATA%\Microsoft\UserSecrets\<user_secrets_id>\secrets.json
  • linux中, ~/.microsoft/usersecrets/<user_secrets_id>/secrets.json

设置机密

dotnet user-secrets set "WeChatAppKey" "X3423FEED2435DD"

其中keyWeChatAppKey是dotnet core配置系统中的key, 所以可以是:号分隔, 映射到配置树

dotnet user-secrets list 可以查看当前机密

代码中访问机密

public class Startup
{
private string _wechatKey= null; public Startup(IConfiguration configuration)
{
Configuration = configuration;
} public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services)
{
_wechatKey = Configuration["WeChatAppKey"];
} public void Configure(IApplicationBuilder app)
{
var result = string.IsNullOrEmpty(_wechatKey) ? "Null" : "Not Null";
app.Run(async (context) =>
{
await context.Response.WriteAsync($"Secret is {result}");
});
}
}

脚注

[ASP.NET Core 优雅的在开发环境保存机密](https://www.cnblogs.com/savorboard/p/dotnetcore-user-secrets.html)

在开发期间安全存储应用机密

ubuntu中使用机密数据Secrets的更多相关文章

  1. 解决Ubuntu中phpmyadmin对数据上传上限2M

    本文部分参考自:http://www.myhack58.com/Article/sort099/sort0102/2011/29396.htm 原文有少量错误或者过时的(相对于ubuntu15来说)内 ...

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

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

  3. ubuntu 中数据的迁移

    1.先停止mysql /etc/init.d/mysql stop

  4. Ubuntu中使用pyUSB读取鼠标或键盘的数据程序

    参考 :http://www.orangecoat.com/how-to/read-and-decode-data-from-your-mouse-using-this-pyusb-hack 要注意的 ...

  5. Ubuntu中实现Docker内安装jenkins+jenkins远程触发

    前面做了在ubuntu中安装jenkins+docker实现自动部署,但是得安装jdk8+tomcat8环境,比较麻烦,因此本文记录如何将jenkins直接装在dockers内并且实现远程触发功能. ...

  6. Ubuntu 中软件的安装、卸载以及查看的方法总结

    Ubuntu 中软件的安装.卸载以及查看的方法总结 博客分类: Linux UbuntuDebian配置管理CacheF#  说明:由于图形化界面方法(如Add/Remove... 和Synaptic ...

  7. 在Ubuntu中安装Redis

    原文地址:http://blog.fens.me/linux-redis-install/ 在Ubuntu中安装Redis R利剑NoSQL系列文章,主要介绍通过R语言连接使用nosql数据库.涉及的 ...

  8. Ubuntu中查看硬盘分区UUID的方法(所有Linux目录的解释)

    在Ubuntu中UUID的两种获取方法,至于UUID是什么,你可以大概理解为分区的标识符,像条形码那样. 在终端中输入下面的命令就可心查看到分区UUID了.命令1.sudo blkid 命令2.ls ...

  9. Ubuntu中使用iptables

    (一) 设置开机启动iptables # sysv-rc-conf --level 2345 iptables on (二) iptables的基本命令 1. 列出当前iptables的策略和规则 # ...

随机推荐

  1. [Swift]LeetCode241. 为运算表达式设计优先级 | Different Ways to Add Parentheses

    Given a string of numbers and operators, return all possible results from computing all the differen ...

  2. [Swift]LeetCode396. 旋转函数 | Rotate Function

    Given an array of integers A and let n to be its length. Assume Bk to be an array obtained by rotati ...

  3. [Swift]LeetCode705. 设计哈希集合 | Design HashSet

    Design a HashSet without using any built-in hash table libraries. To be specific, your design should ...

  4. [Swift]LeetCode721. 账户合并 | Accounts Merge

    Given a list accounts, each element accounts[i] is a list of strings, where the first element accoun ...

  5. MySQL下载、安装和登录详解

    MySQL是一个小型的数据库管理系统,由于其体积小,速度快,尤其是开放源代码等优点,使得其在开发中得到广泛的使用,本文主要介绍MySQL数据库从下载到安装及通过命令行的使用等. 一.下载部分 下载链接 ...

  6. Java破解图片防盗链

    前言 今天想下载几张好看的壁纸,然后发现了一张是自己比较喜欢的额.然后点进去看看,WOW!好多好看的壁纸呀,于是我就起了贪念.哈哈!想把他们这一组图片打包下载,小白的方法就是一张一张下载,那样对于我们 ...

  7. Python内置函数(38)——list

    英文文档: class list([iterable]) Rather than being a function, list is actually a mutable sequence type, ...

  8. Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?

    前言 在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty. 但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚. 本文就来从历史源头说道说道. 传统 IO ...

  9. 道路运输车辆卫星定位系统JT/T808服务实现和压测

    在工作上的需要接触道路运输车辆卫星定位系统相关应用,由于自己对网络服务的编写比较感兴趣,所以利用空闲时间实现了JT/T808的一些协议和相关服务(不得不说这种协议的设计在解释的确导致性能上的损耗,特别 ...

  10. .NetCore&Linux&Docker&Portainer踩坑历险记

    最近有一个云服务器和数据库的迁移任务,踩坑爬坑无数次,觉得必须要记录一下.大家瓜子花生准备好,听我慢慢讲故事#手动笑哭#. 故事背景 公司是做电商业务的,在天猫有几家旗舰店数据量也很大.阿里有一个称为 ...