Maison >développement back-end >Tutoriel C#.Net >Partagez un exemple de secrets d'enregistrement ASP.NET Core (secrets utilisateur) dans l'environnement de développement
Cet article présente principalement en détail comment ASP.NET Core enregistre avec élégance les secrets d'utilisateur confidentiels dans l'environnement de développement. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
Avant-propos<.>
Dans le processus de développement d'applications, il est parfois nécessaire de sauvegarder certaines informations confidentielles dans le code, telles que des clés de cryptage, deschaînes ou des noms d'utilisateur Mot de passe etc. L'approche habituelle consiste à l'enregistrer dans un fichier de configuration Dans le passé, nous l'enregistrions dans web.config, mais dans ASP.NET Core, cette méthode a peut-être changé, ou vous disposez de méthodes plus diverses. et des configurations plus élégantes pour définir ou enregistrer ces informations confidentielles.
Au début, je pensais que ceUserSecrets ne servait à rien, car si j'avais besoin de configurer quelque chose, je pouvais le configurer directement dans le fichier appsetting.json jusqu'à ce que Pendant un processus de développement, j'ai ressenti sa véritable utilité.
Répertoire
Introduction aux secrets utilisateur
Vous pouvez réfléchir à la façon dont nous avons géré les scénarios suivants dans le code précédent :Startup.cs :
public Startup(IHostingEnvironment env) { ..... if (env.IsDevelopment()) { builder.AddUserSecrets(); } builder.AddEnvironmentVariables(); }dans
Projet .json Dans le fichier, vous verrez quelques configurations liées aux secrets d'utilisateur
{ "userSecretsId": "aspnet-WebAppCore-e278c40f-15bd-4c19-9662-541514f02f3e" ... "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0", "Microsoft.Extensions.SecretManager.Tools": “1.0.0-preview2-final” }Vous pouvez voir la ligne de code
builder.AddUserSecrets, qui se trouve dans l'environnement de développement en cours d'exécution.
userSecretsId est utilisé pour identifier de manière unique les secrets utilisateur du projet. S'il y a deux projets qui doivent utiliser des secrets différents, ils doivent avoir un userSecretsId différent.
Microsoft.Extensions.SecretManager.Tools Principalement utilisé pour définir ou afficher la valeur des secrets.
Comment ajouter des secrets utilisateur
Vous pouvez utiliser la commande dans la ligne de commande pour ajouter :dotnet user-secrets -h pour afficher les commandes qui peuvent être utilisées
la liste des secrets d'utilisateur dotnet Listez tous les secrets d'utilisateur
les secrets d'utilisateur dotnet définissent WeChatAppKey "X3423FEED2435DD" pour définir un secret utilisateur, où WebChatAppKey est la clé, suivie de la valeur.
liste des secrets utilisateur dotnet pour afficher les paires clé-valeur définies.
Gérer les secrets utilisateur :
Où est stocké secrets.json ?
Dans les systèmes non Windows, son emplacement de stockage est~/.microsoft/usersecrets/<userSecretsId>/secrets.jsonDans les systèmes Windows, son emplacement est
C:\Users\用户名\AppData\Roaming\Microsoft\UserSecrets\aspnet-WebAppCore-e278c40f-15bd-4c19-9662-541514f02f3eComme vous pouvez voyez, le dossier de niveau supérieur stocké est la valeur définie par
userSecretsId dans le fichier project.json.
Utilisation des secrets utilisateur dans les applications
Pour accéder aux secrets utilisateur configurés dans votre application, vous devez vous assurer queproject.json Les dépendances sont présents dans le fichier :
Microsoft.Extensions.Configuration.UserSecrets et 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 中对于开发人员还是非常贴心的,很多小细节都考虑到了,因此在我们构建应用程序的过程中,可以多使用这些小功能(特性)来让我们的代码更加的优雅~
【相关推荐】
4. 如何在ASP.NET Core中使用Cookie中间件的详细介绍
5. .Net Core中如何使用ref和Span8742468051c85b06f0a0af9e3e506b5c提高程序性能的实现代码
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!