亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ASP.NET Core優雅的在開發環境保存機密(User Secrets)

2024-07-10 13:32:23
字體:
來源:轉載
供稿:網友

前言

在應用程序開發的過程中,有的時候需要在代碼中保存一些機密的信息,比如加密密鑰,字符串,或者是用戶名密碼等。通常的做法是保存到一個配置文件中,在以前我們會把他保存到web.config中,但是在ASP.NET Core中,這一方式或許發生了改變,或者說你有更多多元化的方法, 以及更加優雅的的配置來設置或者保存這些機密資料。

起初我以為這個UserSecrets它并沒有什么用,因為我有需要配置的地方我直接配置到appsetting.json文件中就可以了,直到一次開發過程中,我才感受到了它真正的用途。

目錄

  • 用戶機密介紹
  • 如何添加用戶機密
  • 在應用程序中使用用戶機密
  • 總結

用戶機密介紹

有以下場景大家可以想一下在以前的代碼中我們是怎么樣處理的:

  • 需要保存一些和第三方網站對接的密鑰,比如和 微信,微博站點使用的 appkey
  • 給每個開發人員配置不用的用戶名密碼來訪問一些資源
  • 開發人員在開發過程中使用各自本機的數據庫,如何配置數據庫地址、賬號和密碼

假設說最后一項,每個開發要使用自己本機的數據庫,你可能會說讓每個人修改自己的web.config,在提交代碼的時候不提交就行了。那么如果在web.config添加其他配置項的時候,顯然不提交web.config文件不合理的。

現在,ASP.NET Core 提供了一種很優雅簡潔的方式 User Secrets 用來幫助我們解決這個事情。

在新建一個 ASP.NET Core Web 應用程序的時候,會在 Startup.cs 文件中看到這樣一段代碼:

public Startup(IHostingEnvironment env) {  .....  if (env.IsDevelopment())  {    builder.AddUserSecrets();  }    builder.AddEnvironmentVariables();}

project.json 文件中,會看到 User Secrets 相關的一些配置

{  "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是用來標識項目的User Secrets唯一性的,如果有兩個項目需要使用不同的Secrets ,這就需要有不同的userSecretsId。

Microsoft.Extensions.SecretManager.Tools 主要是用來設置或者查看secrets的值。

如何添加用戶機密

可以在命令行中使用命令來添加:

image

  • 切換命令行窗口到程序的運行目錄, 輸入 dotnet user-secrets -h ,來查看可以使用的命令
  • 使用 dotnet user-secrets list 列出所有的用戶機密
  • 使用 dotnet user-secrets set WeChatAppKey "X3423FEED2435DD"設置一個用戶機密,其中 WebChatAppKey 為鍵,后面的是值。
  • 然后使用dotnet user-secrets list來查看設置的鍵值對。
  • 然后我又設置了一個數據庫的連接字符串進去。

以上是使用命令行的方式來設置用戶機密,也可以使用 Visual Studio 2015代替命令行來做這項工作。

Visual Studio中,在Web項目上右鍵,可以看到一個 管理用戶機密 的菜單:

image

點擊打開時候,會出現一個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 中對于開發人員還是非常貼心的,很多小細節都考慮到了,因此在我們構建應用程序的過程中,可以多使用這些小功能(特性)來讓我們的代碼更加的優雅~

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91禁国产网站| 91精品国产色综合久久不卡98口| 色久欧美在线视频观看| 国产精品久在线观看| 亚洲一二三在线| 亚洲最大福利网| 久久99亚洲精品| 日韩在线不卡视频| 欧美一级电影久久| 欧美亚洲日本黄色| 秋霞午夜一区二区| 久久精品91久久香蕉加勒比| 一个人看的www久久| 久久综合久久88| 久久精品国产99国产精品澳门| 亚洲精品美女在线| 欧美在线观看视频| 91精品视频在线看| 欧美性视频网站| 国产精品在线看| 亚洲xxx自由成熟| 久久99热这里只有精品国产| 狠狠躁18三区二区一区| 中文国产成人精品| 国产精品视频区1| 久久精品久久久久久国产 免费| 亚洲欧美日韩一区二区在线| 91免费欧美精品| 久久久之久亚州精品露出| 38少妇精品导航| 伊人激情综合网| 亚洲国产小视频| 国产在线视频2019最新视频| 一区二区日韩精品| 91国在线精品国内播放| 亚洲黄色在线观看| 亚洲国产欧美一区| 精品中文字幕在线| 2021久久精品国产99国产精品| 日本精品一区二区三区在线| 97国产精品视频人人做人人爱| 国产欧美日韩精品丝袜高跟鞋| 成人高h视频在线| 欧美成人激情视频| 91视频国产高清| 亚洲精品videossex少妇| 人妖精品videosex性欧美| 人人做人人澡人人爽欧美| 久久777国产线看观看精品| 伊人久久久久久久久久久久久| 国产精品一区电影| 国产精品视频成人| 欧美夜福利tv在线| 日韩中文字幕在线播放| 亚洲欧美精品中文字幕在线| 国产91精品久久久久| 国产激情999| 亚洲第一精品夜夜躁人人躁| 亚洲电影中文字幕| 97超碰蝌蚪网人人做人人爽| 欧美亚洲另类激情另类| 成人午夜激情免费视频| 日韩av快播网址| 色综合天天狠天天透天天伊人| 久久国产精品首页| 国产成人精品在线播放| 欧美中文字幕在线观看| 久久久久久久国产| 欧美有码在线视频| 日本一区二区三区在线播放| 欧美日本在线视频中文字字幕| 亚洲精品999| 美女啪啪无遮挡免费久久网站| 亚洲日韩中文字幕| 欧美精品精品精品精品免费| 国产精品视频一区二区三区四| 国产精品扒开腿做爽爽爽男男| 日韩精品视频观看| 久久久精品免费视频| 91精品国产综合久久男男| 亚洲人成网站777色婷婷| 久久人人爽国产| 亚洲激情视频在线播放| 精品日韩中文字幕| 国产午夜精品视频免费不卡69堂| 国产精品高潮在线| 日韩av影视在线| 精品一区二区三区四区在线| 亚洲精品美女在线观看| 日韩成人激情在线| 国产91网红主播在线观看| 亚洲va男人天堂| 欧美激情二区三区| 色777狠狠综合秋免鲁丝| 精品久久中文字幕久久av| 高清一区二区三区日本久| 日韩视频永久免费观看| 欧美午夜影院在线视频| 亚洲美女视频网站| 日韩高清a**址| 欧美老少做受xxxx高潮| 亚洲第一福利视频| 欧美日韩国产一区二区三区| 亚洲精品91美女久久久久久久| 欧美制服第一页| 亚洲欧洲中文天堂| 一区二区欧美久久| 韩国一区二区电影| 国产精品久久久久99| 国产精品一区二区三| 国产国语刺激对白av不卡| 久久天天躁日日躁| 亚洲欧美资源在线| 欧美午夜精品在线| 日韩性生活视频| 亚洲香蕉成视频在线观看| 欧美国产日韩中文字幕在线| 日韩在线激情视频| 欧美尺度大的性做爰视频| 亚洲理论片在线观看| 成人激情视频在线| 韩国19禁主播vip福利视频| 国产伊人精品在线| 一区国产精品视频| 亚洲精品国产成人| 午夜精品美女自拍福到在线| 亚洲国产婷婷香蕉久久久久久| 亚洲精品天天看| 久久中文字幕在线视频| 国产免费一区二区三区在线观看| 久久久久久午夜| 国产一区二区在线免费| 欧美性猛交xxxx乱大交极品| 欧美电影电视剧在线观看| 欧美日韩中文字幕| 亚洲色图在线观看| 国产视频精品xxxx| 久久国产精品亚洲| 国产精品美女999| 青草热久免费精品视频| 国产午夜精品免费一区二区三区| 美女福利精品视频| 九色成人免费视频| 亚洲成人激情在线| 三级精品视频久久久久| 精品偷拍各种wc美女嘘嘘| 国产精品啪视频| 97视频在线观看视频免费视频| 国产精品一区二区三区久久| 欧美性理论片在线观看片免费| 国模吧一区二区三区| 色偷偷av亚洲男人的天堂| 91精品国产91久久久久| 欧美精品在线免费观看| 中文字幕日韩精品在线| 欧美日韩在线观看视频| 日本精品中文字幕| 日韩免费黄色av| 国产成人自拍视频在线观看| 国产精品老女人视频| 97视频在线观看成人| 久久精品视频中文字幕| 91精品视频专区| 日韩在线观看电影|