国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - ASP.NET Core優(yōu)雅的在開(kāi)發(fā)環(huán)境保存機(jī)密(User Secrets)

ASP.NET Core優(yōu)雅的在開(kāi)發(fā)環(huán)境保存機(jī)密(User Secrets)

2020-05-05 16:00Savorboard ASP.NET教程

這篇文章主要為大家詳細(xì)介紹了ASP.NET Core如何優(yōu)雅的在開(kāi)發(fā)環(huán)境保存機(jī)密User Secrets,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

在應(yīng)用程序開(kāi)發(fā)的過(guò)程中,有的時(shí)候需要在代碼中保存一些機(jī)密的信息,比如加密密鑰,字符串,或者是用戶名密碼等。通常的做法是保存到一個(gè)配置文件中,在以前我們會(huì)把他保存到web.config中,但是在ASP.NET Core中,這一方式或許發(fā)生了改變,或者說(shuō)你有更多多元化的方法, 以及更加優(yōu)雅的的配置來(lái)設(shè)置或者保存這些機(jī)密資料。

起初我以為這個(gè)UserSecrets它并沒(méi)有什么用,因?yàn)槲矣行枰渲玫牡胤轿抑苯优渲玫?span style="color: #800000">appsetting.json文件中就可以了,直到一次開(kāi)發(fā)過(guò)程中,我才感受到了它真正的用途。

目錄

  • 用戶機(jī)密介紹
  • 如何添加用戶機(jī)密
  • 在應(yīng)用程序中使用用戶機(jī)密
  • 總結(jié)

用戶機(jī)密介紹

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

  • 需要保存一些和第三方網(wǎng)站對(duì)接的密鑰,比如和 微信,微博站點(diǎn)使用的 appkey
  • 給每個(gè)開(kāi)發(fā)人員配置不用的用戶名密碼來(lái)訪問(wèn)一些資源
  • 開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中使用各自本機(jī)的數(shù)據(jù)庫(kù),如何配置數(shù)據(jù)庫(kù)地址、賬號(hào)和密碼

假設(shè)說(shuō)最后一項(xiàng),每個(gè)開(kāi)發(fā)要使用自己本機(jī)的數(shù)據(jù)庫(kù),你可能會(huì)說(shuō)讓每個(gè)人修改自己的web.config,在提交代碼的時(shí)候不提交就行了。那么如果在web.config添加其他配置項(xiàng)的時(shí)候,顯然不提交web.config文件不合理的。

現(xiàn)在,ASP.NET Core 提供了一種很優(yōu)雅簡(jiǎn)潔的方式 User Secrets 用來(lái)幫助我們解決這個(gè)事情。

在新建一個(gè) ASP.NET Core Web 應(yīng)用程序的時(shí)候,會(huì)在 Startup.cs 文件中看到這樣一段代碼:

?
1
2
3
4
5
6
7
8
9
10
11
public Startup(IHostingEnvironment env)
{
  .....
 
  if (env.IsDevelopment())
  {
    builder.AddUserSecrets();
  }
  
  builder.AddEnvironmentVariables();
}

project.json 文件中,會(huì)看到 User Secrets 相關(guān)的一些配置

?
1
2
3
4
5
6
7
{
  "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這行代碼,他是在開(kāi)發(fā)環(huán)境才運(yùn)行的。

userSecretsId是用來(lái)標(biāo)識(shí)項(xiàng)目的User Secrets唯一性的,如果有兩個(gè)項(xiàng)目需要使用不同的Secrets ,這就需要有不同的userSecretsId。

Microsoft.Extensions.SecretManager.Tools 主要是用來(lái)設(shè)置或者查看secrets的值。

如何添加用戶機(jī)密

可以在命令行中使用命令來(lái)添加:

image

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

以上是使用命令行的方式來(lái)設(shè)置用戶機(jī)密,也可以使用 Visual Studio 2015代替命令行來(lái)做這項(xiàng)工作。

Visual Studio中,在Web項(xiàng)目上右鍵,可以看到一個(gè) 管理用戶機(jī)密 的菜單:

image

點(diǎn)擊打開(kāi)時(shí)候,會(huì)出現(xiàn)一個(gè)secrets.json的文件,里面就是剛剛在命令行設(shè)置的鍵值對(duì):

image

有些同學(xué)可能會(huì)問(wèn)既然是存儲(chǔ)到secrets.json,那么這個(gè)文件是在哪里呢?

secrets.json的存儲(chǔ)位置?

在非Windows系統(tǒng)中,它的存儲(chǔ)位置在

~/.microsoft/usersecrets/<userSecretsId>/secrets.json

在Windows系統(tǒng)中,它的位置在

C:\Users\用戶名\AppData\Roaming\Microsoft\UserSecrets\aspnet-WebAppCore-e278c40f-15bd-4c19-9662-541514f02f3e

可以看到,存儲(chǔ)的上層文件夾就是project.json文件中的 userSecretsId 設(shè)定的值。

在應(yīng)用程序中使用用戶機(jī)密

要在應(yīng)用程序中訪問(wèn)配置的用戶機(jī)密,你需要保證project.json文件中存在依賴項(xiàng):
Microsoft.Extensions.Configuration.UserSecrets 并且builder.AddUserSecrets()。

然后在Startup.cs文件中通過(guò) Configuration 對(duì)象訪問(wèn)

?
1
2
3
4
5
public IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
  var wechatKey = Configuration["WeChatAppKey"]
}

你可以使用DI來(lái)將用戶機(jī)密映射到一個(gè)C#類文件,像這樣

secrets.json

?
1
2
3
4
5
6
7
8
{
  "SecretsKeys":
  {
    WeCharAppKey:"xxejfwert3045",
    WeboAppKey:"35402345lkefgjlkdfg",
    .....
  }
}

SecretsKeysConfig.cs

?
1
2
3
4
5
6
7
8
public class SecretsKeysConfig
{
  public string WeCharAppKey { get; set;}
  
  public string WeboAppKey { get; set;}
  
  // ......
}

Startup.cs

?
1
2
3
4
5
6
public void ConfigureServices(IServiceCollection services)
{
  services.Configure<SecretsKeysConfig>(Configuration.GetSection("SecretsKeys"));
  
  // 其他代碼
}

HomeController.cs

?
1
2
3
4
5
6
7
8
9
public class HomeController : Controller
{
  public SecretsKeysConfig AppConfigs { get; }
  public HomeController(IOptions<SecretsKeysConfig> appkeys)
  {
    AppConfigs = appkeys.Value;
  }
 
}

注意:如果你的appsetting.json文件中有和secrets.json文件中相同節(jié)點(diǎn)(沖突)的配置項(xiàng),那么就會(huì)被secrets.json中的設(shè)置項(xiàng)給覆蓋掉,因?yàn)?builder.AddUserSecrets()晚于 AddJsonFile("appsettings.json")注冊(cè), 那么我們可以利用這個(gè)特性來(lái)在每個(gè)開(kāi)發(fā)人員的機(jī)器上重新設(shè)置數(shù)據(jù)庫(kù)連接字符串了。

總結(jié)

以上,或許可以感受到微軟在 ASP.NET Core 中對(duì)于開(kāi)發(fā)人員還是非常貼心的,很多小細(xì)節(jié)都考慮到了,因此在我們構(gòu)建應(yīng)用程序的過(guò)程中,可以多使用這些小功能(特性)來(lái)讓我們的代碼更加的優(yōu)雅~

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/savorboard/p/dotnetcore-user-secrets.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 人人射| 91精品国产综合久久福利软件 | 久草青青 | 色综合一区二区 | 精品国产乱码久久久久久图片 | 一区二区国产精品 | 精品一区二区三区四区五区 | 欧美在线观看视频 | 国产成人精品一区二区三区视频 | 国产精品一区二区在线观看 | 久久久精品在线 | 91免费视频观看 | 国产精品色一区二区三区 | av电影一区二区 | 国产成人精品免费视频大全最热 | 日本a v网站 | 欧美三级在线 | 日本久久综合 | 在线观看日韩精品 | 99亚洲伊人久久精品影院 | 久久久精品在线观看 | 黄色在线免费 | 精品免费国产一区二区三区四区 | 亚洲国产一区视频 | 日本丶国产丶欧美色综合 | 一本大的之伊人 | 国内精品视频在线观看 | 成人免费视频网站在线观看 | 免费看黄在线 | 成人精品久久久 | 成人免费激情视频 | 性色av一区二区三区 | 久久首页 | 久久国产精品免费一区二区三区 | 欧美日韩一区二区在线 | 日韩视频一区 | 日韩高清一区 | 国产综合在线视频 | 日韩欧美一区二区三区在线观看 | sis001亚洲原创区 | 日韩有码一区二区三区 |