Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie ein Beispiel dafür, wie ASP.NET Core Geheimnisse (Benutzergeheimnisse) in der Entwicklungsumgebung speichert

Teilen Sie ein Beispiel dafür, wie ASP.NET Core Geheimnisse (Benutzergeheimnisse) in der Entwicklungsumgebung speichert

零下一度
零下一度Original
2017-05-27 10:35:281669Durchsuche

Dieser Artikel stellt hauptsächlich detailliert vor, wie ASP.NET Core vertrauliche Benutzergeheimnisse in der Entwicklungsumgebung speichert. Er hat einen gewissen Referenzwert.

Vorwort

Im Prozess der Anwendungsentwicklung ist es manchmal notwendig, einige vertrauliche Informationen im Code zu speichern, wie z. B. Verschlüsselungsschlüssel, Zeichenfolgen oder Benutzernamen, Passwörter usw. Der übliche Ansatz besteht darin, es in einer Konfigurationsdatei zu speichern. In der Vergangenheit haben wir es in web.config gespeichert, aber in ASP.NET Core hat sich diese Methode möglicherweise geändert, oder Sie verfügen über vielfältigere Methoden und elegantere Konfigurationen zum Festlegen oder Speichern dieser vertraulichen Informationen.

Zuerst dachte ich, dass dieses UserSecrets nutzlos sei, denn wenn ich etwas konfigurieren müsste, könnte ich es direkt in der Datei appsetting.json konfigurieren Als Entwicklungsprozess spürte ich seinen wahren Nutzen.

Verzeichnis

  • Einführung in Benutzergeheimnisse

  • So fügen Sie Benutzergeheimnisse hinzu

  • Verwendung von Benutzergeheimnissen in Anwendungen

  • Zusammenfassung

Einführung in Benutzergeheimnisse

Sie können darüber nachdenken, wie wir die folgenden Szenarien im vorherigen Code gehandhabt haben:

  • Sie müssen einige Schlüssel für die Verbindung mit Websites von Drittanbietern speichern, z. B. The appkey, der von WeChat- und Weibo-Sites verwendet wird

  • konfiguriert unterschiedliche Benutzernamen und Passwörter für jeden Entwickler, um auf einige Ressourcen zuzugreifen

  • Entwickler Verwenden Sie während des Entwicklungsprozesses Ihre eigene lokale Datenbank. Wie konfiguriere ich die Datenbankadresse, das Konto und das Passwort? Lassen Sie jeden seine eigene web.config ändern, übermitteln Sie sie jedoch nicht, wenn Sie den Code übermitteln. Wenn Sie also weitere Konfigurationselemente zu web.config hinzufügen, ist es offensichtlich unvernünftig, die Datei web.config nicht einzureichen.

    Jetzt bietet ASP.NET Core eine sehr elegante und prägnante Möglichkeit, mit User Secrets dieses Problem zu lösen.
Wenn Sie eine neue ASP.NET Core-Webanwendung erstellen, sehen Sie diesen Code in der Datei

Startup.cs

:

in Projekt .json In der Datei sehen Sie einige Konfigurationen im Zusammenhang mit Benutzergeheimnissen

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

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

Sie können die Codezeile builder.AddUserSecrets sehen, die sich in der Entwicklungsumgebung befindet läuft.

{
  "userSecretsId": "aspnet-WebAppCore-e278c40f-15bd-4c19-9662-541514f02f3e"
  ...
  
  "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
  "Microsoft.Extensions.SecretManager.Tools": “1.0.0-preview2-final”
}

userSecretsId wird verwendet, um die Benutzergeheimnisse des Projekts eindeutig zu identifizieren. Wenn es zwei Projekte gibt, die unterschiedliche Geheimnisse verwenden müssen, müssen sie unterschiedliche userSecretsId haben.

Microsoft.Extensions.SecretManager.Tools Wird hauptsächlich zum Festlegen oder Anzeigen des Werts von Geheimnissen verwendet.

So fügen Sie Benutzergeheimnisse hinzu

Sie können den Befehl in der Befehlszeile verwenden, um Folgendes hinzuzufügen:

Bild


Wechseln Sie das Befehlszeilenfenster in das laufende Verzeichnis des Programms und geben Sie

dotnet user-secrets -h

ein, um die Befehle anzuzeigen, die verwendet werden können
  • Verwenden Sie dotnet user-secrets list

    Alle Benutzergeheimnisse auflisten
  • Verwenden Sie dotnet user-secrets set WeChatAppKey „X3423FEED2435DD“

    , um eine festzulegen Benutzergeheimnis, wobei WebChatAppKey der Schlüssel ist, gefolgt vom Wert.
  • Verwenden Sie dann Dotnet-Benutzergeheimnisliste

    , um die festgelegten Schlüssel-Wert-Paare anzuzeigen.
  • Dann habe ich eine Datenbankverbindungszeichenfolge eingerichtet.

  • Das Obige dient der Verwendung der Befehlszeile zum Festlegen von Benutzergeheimnissen. Sie können für diese Arbeit auch Visual Studio 2015 anstelle der Befehlszeile verwenden.

    Klicken Sie in Visual Studio mit der rechten Maustaste auf das Webprojekt. Sie können ein Menü mit
  • Benutzergeheimnisse verwalten
sehen:

Bild
Wenn Sie zum Öffnen klicken, wird eine Datei „secrets.json“ angezeigt, die die gerade in der Befehlszeile festgelegten Schlüssel-Wert-Paare enthält:


Bild

Einige Schüler können dies tun Da es sich um einen Speicher in Secrets.json handelt, fragen Sie: Wo ist diese Datei?

Wo wird Secrets.json gespeichert?

In Nicht-Windows-Systemen ist der Speicherort

In Windows-Systemen ist der Speicherort

~/.microsoft/usersecrets/<userSecretsId>/secrets.json
Wie Sie können Sehen Sie, der gespeicherte Ordner der oberen Ebene ist der Wert, der durch

userSecretsId
in der Datei

project.json
C:\Users\用户名\AppData\Roaming\Microsoft\UserSecrets\aspnet-WebAppCore-e278c40f-15bd-4c19-9662-541514f02f3e
festgelegt wird.

Benutzergeheimnisse in Anwendungen verwenden

Um auf konfigurierte Benutzergeheimnisse in Ihrer Anwendung zuzugreifen, müssen Sie sicherstellen, dass

project.json Abhängigkeiten vorhanden sind in der Datei vorhanden:

Microsoft.Extensions.Configuration.UserSecrets

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

【相关推荐】

1. ASP.NET免费视频教程

2. 详细介绍ZKEACMS for .Net Core

3. 在.net core 下如何进行http请求?

4. 如何在ASP.NET Core中使用Cookie中间件的详细介绍

5. .Net Core中如何使用ref和Span8742468051c85b06f0a0af9e3e506b5c提高程序性能的实现代码

Das obige ist der detaillierte Inhalt vonTeilen Sie ein Beispiel dafür, wie ASP.NET Core Geheimnisse (Benutzergeheimnisse) in der Entwicklungsumgebung speichert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn