前言
在應(yīng)用程序開發(fā)的過程中,有的時候需要在代碼中保存一些機(jī)密的信息,比如加密密鑰,字符串,或者是用戶名密碼等。通常的做法是保存到一個配置文件中,在以前我們會把他保存到web.config中,但是在ASP.NET Core中,這一方式或許發(fā)生了改變,或者說你有更多多元化的方法, 以及更加優(yōu)雅的的配置來設(shè)置或者保存這些機(jī)密資料。
起初我以為這個UserSecrets它并沒有什么用,因?yàn)槲矣行枰渲玫牡胤轿抑苯优渲玫絘ppsetting.json文件中就可以了,直到一次開發(fā)過程中,我才感受到了它真正的用途。
目錄
用戶機(jī)密介紹 如何添加用戶機(jī)密 在應(yīng)用程序中使用用戶機(jī)密 總結(jié)用戶機(jī)密介紹
有以下場景大家可以想一下在以前的代碼中我們是怎么樣處理的:
需要保存一些和第三方網(wǎng)站對接的密鑰,比如和 微信,微博站點(diǎn)使用的 appkey 給每個開發(fā)人員配置不用的用戶名密碼來訪問一些資源 開發(fā)人員在開發(fā)過程中使用各自本機(jī)的數(shù)據(jù)庫,如何配置數(shù)據(jù)庫地址、賬號和密碼假設(shè)說最后一項(xiàng),每個開發(fā)要使用自己本機(jī)的數(shù)據(jù)庫,你可能會說讓每個人修改自己的web.config,在提交代碼的時候不提交就行了。那么如果在web.config添加其他配置項(xiàng)的時候,顯然不提交web.config文件不合理的。
現(xiàn)在,ASP.NET Core 提供了一種很優(yōu)雅簡潔的方式 User Secrets 用來幫助我們解決這個事情。
在新建一個 ASP.NET Core Web 應(yīng)用程序的時候,會在 Startup.cs 文件中看到這樣一段代碼:
public Startup(IHostingEnvironment env) { ..... if (env.IsDevelopment()) { builder.AddUserSecrets(); } builder.AddEnvironmentVariables();}在 project.json 文件中,會看到 User Secrets 相關(guān)的一些配置
{ "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這行代碼,他是在開發(fā)環(huán)境才運(yùn)行的。
userSecretsId是用來標(biāo)識項(xiàng)目的User Secrets唯一性的,如果有兩個項(xiàng)目需要使用不同的Secrets ,這就需要有不同的userSecretsId。
Microsoft.Extensions.SecretManager.Tools 主要是用來設(shè)置或者查看secrets的值。
如何添加用戶機(jī)密
可以在命令行中使用命令來添加:
image
切換命令行窗口到程序的運(yùn)行目錄, 輸入 dotnet user-secrets -h ,來查看可以使用的命令 使用 dotnet user-secrets list 列出所有的用戶機(jī)密 使用 dotnet user-secrets set WeChatAppKey "X3423FEED2435DD"設(shè)置一個用戶機(jī)密,其中 WebChatAppKey 為鍵,后面的是值。 然后使用dotnet user-secrets list來查看設(shè)置的鍵值對。 然后我又設(shè)置了一個數(shù)據(jù)庫的連接字符串進(jìn)去。新聞熱點(diǎn)
疑難解答
圖片精選