検索
ホームページバックエンド開発C#.Net チュートリアルCore が ASP.NET の開発環境でシークレット (ユーザー シークレット) をエレガントに保存する方法の詳細な説明

この記事では、ASP.NET Core が開発環境でユーザー シークレットをエレガントに保存する方法を主に詳しく紹介します。これには特定の参考値があります。

前書き

暗号化キー、文字列、ユーザー名とパスワードなどの一部の機密情報をコードに保存する必要があります。以前は、構成ファイルに保存するのが一般的でしたが、ASP.NET Core では、この方法が変更されたか、より多様で洗練された方法が使用できるようになりました。これらの機密情報を設定または保存するための設定。

最初は、この UserSecrets は役に立たないと思っていました。なぜなら、何かを設定する必要がある場合は、appsetting.json ファイルに直接設定できるからです。開発プロセスになって初めて、その本当の意味を感じました。使う。

目次

  • ユーザー シークレットの概要

  • ユーザー シークレットの追加方法

  • アプリでのユーザー シークレットの使用

  • 概要

ユーザー機密紹介

前のコードでどのように処理したかをシナリオで考えてみましょう:

  • WeChat や Weibo サイトで使用されるアプリキーなど、サードパーティの Web サイトに接続するためにいくつかのキーを保存する必要があります

  • それぞれの開発者は、いくつかのリソースにアクセスするために異なるユーザー名とパスワードを設定します

  • 開発者は、開発プロセス中に独自のローカルデータベースを使用します データベースアドレス、アカウント、パスワードを設定する方法

最後の項目は、それぞれであると仮定します。開発に独自のローカル データベースを使用したい場合は、全員が自分の web.config を変更する必要があり、コードを送信するときにそれを送信しないでくださいと言うかもしれません。したがって、他の構成項目を web.config に追加する場合、web.config ファイルを送信しないのは明らかに不合理です。

現在、ASP.NET Core は、この問題の解決に役立つ非常にエレガントで簡潔な方法のユーザー シークレットを提供しています。

新しい ASP.NET Core Web アプリケーションを作成すると、Startup.cs ファイルに次のコードが表示されます。


public Startup(IHostingEnvironment env) 
{
  .....

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

project.json ファイルには、ユーザー シークレットが表示されます。構成


{
  "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 は、プロジェクトのユーザー シークレットを一意に識別するために使用されます。異なるシークレットを使用する必要があるプロジェクトが 2 つある場合、それらのプロジェクトには異なる userSecretsId が必要です。

Microsoft.Extensions.SecretManager.Tools 主にシークレットの値を設定または表示するために使用されます。

ユーザー シークレットを追加する方法

コマンド ラインで次のコマンドを使用して次を追加できます:

image

  • コマンド ライン ウィンドウをプログラムの実行ディレクトリに切り替え、「 dotnet user-secrets」と入力します。 -h 使用できるコマンドを表示します

  • dotnet user-secrets リストを使用しますすべてのユーザー シークレットをリストします

  • Use dotnet user-secrets set WeChatAppKey "X3423FEED2435DD" ユーザー シークレットを設定します。WebChatAppKey はキー、以下は値です。

  • 次に、dotnet user-secrets list を使用して、設定されたキーと値のペアを表示します。

  • 次に、データベース接続文字列を設定します。

上記は、コマンド ラインを使用してユーザー シークレットを設定する方法です。コマンド ラインの代わりに Visual Studio 2015 を使用してこの作業を行うこともできます。

Visual Studio で Web プロジェクトを右クリックすると、ユーザー シークレットの管理 メニューが表示されます:

画像

クリックして開くと、secrets.json ファイルが表示されます。コマンドラインで作成したファイル キーと値のペアを設定します:

image

このファイルは Secrets.json に保存されているので、どこにあるのかと尋ねる生徒もいるかもしれません。

Secrets.json はどこに保存されますか?

Windows 以外のシステムの場合、その保存場所は

~/.microsoft/usersecrets//secrets.json

Windows システムの場合、その場所は

C:Users usernameAppDataRoamingMicrosoftUserSecretsaspnet-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 中对于开发人员还是非常贴心的,很多小细节都考虑到了,因此在我们构建应用程序的过程中,可以多使用这些小功能(特性)来让我们的代码更加的优雅~

以上がCore が ASP.NET の開発環境でシークレット (ユーザー シークレット) をエレガントに保存する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
C#.NET開発:始めるための初心者向けガイドC#.NET開発:始めるための初心者向けガイドApr 18, 2025 am 12:17 AM

C#.NET開発を開始するには、次のことが必要です。1。C#の基本的な知識と.NETフレームワークのコア概念を理解する。 2。変数、データ型、制御構造、関数、クラスの基本概念をマスターします。 3。LINQや非同期プログラミングなど、C#の高度な機能を学習します。 4.一般的なエラーのためのデバッグテクニックとパフォーマンス最適化方法に精通してください。これらの手順を使用すると、C#.NETの世界に徐々に浸透し、効率的なアプリケーションを書き込むことができます。

C#と.NET:2つの関係を理解し​​ますC#と.NET:2つの関係を理解し​​ますApr 17, 2025 am 12:07 AM

C#と.NETの関係は切り離せませんが、同じものではありません。 C#はプログラミング言語であり、.NETは開発プ​​ラットフォームです。 C#は、コードの書き込み、.NETの中間言語(IL)にコンパイルされ、.NET Runtime(CLR)によって実行されるために使用されます。

c#.netの継続的な関連性:現在の使用法を見るc#.netの継続的な関連性:現在の使用法を見るApr 16, 2025 am 12:07 AM

C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

Webからデスクトップまで:C#.NETの汎用性Webからデスクトップまで:C#.NETの汎用性Apr 15, 2025 am 12:07 AM

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

c#.net and the Future:新しいテクノロジーへの適応c#.net and the Future:新しいテクノロジーへの適応Apr 14, 2025 am 12:06 AM

C#と.NETは、継続的な更新と最適化を通じて、新しいテクノロジーのニーズに適応します。 1)C#9.0および.NET5は、レコードタイプとパフォーマンスの最適化を導入します。 2).Netcoreは、クラウドネイティブおよびコンテナ化されたサポートを強化します。 3)ASP.Netcoreは、最新のWebテクノロジーと統合されています。 4)ML.NETは、機械学習と人工知能をサポートしています。 5)非同期プログラミングとベストプラクティスはパフォーマンスを改善します。

c#.netはあなたにぴったりですか?その適用性の評価c#.netはあなたにぴったりですか?その適用性の評価Apr 13, 2025 am 12:03 AM

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NET内のC#コード:プログラミングプロセスの調査.NET内のC#コード:プログラミングプロセスの調査Apr 12, 2025 am 12:02 AM

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#.NET:コアの概念とプログラミングの基礎を探るC#.NET:コアの概念とプログラミングの基礎を探るApr 10, 2025 am 09:32 AM

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。