ubuntu中使用机密数据Secrets
目录
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)
上一篇: linux常用操作命令
推荐阅读
-
Java 使用poi把数据库中数据导入Excel的解决方法
-
Mysql5.7中使用group concat函数数据被截断的问题完美解决方法
-
C#中通过使用Connection类来实现打开/关闭数据库的代码实例
-
ASP.NET框架中的数据绑定概要与数据绑定表达式的使用
-
Android中Retrofit 2.0直接使用JSON进行数据交互
-
Javascript ES6中数据类型Symbol的使用详解
-
Oracle中 关于数据库存储过程和存储函数的使用
-
BarTender时钟数据源中偏移转换项怎么使用?
-
解析Android中string-array数据源的简单使用
-
HTML5中使用postMessage实现两个网页间传递数据