制作网站哪家好,各大网站vip接口建设,百度关键词广告怎么收费,网页美工设计图前言 在应用程序开发的过程中#xff0c;有的时候需要在代码中保存一些机密的信息#xff0c;比如加密密钥#xff0c;字符串#xff0c;或者是用户名密码等。通常的做法是保存到一个配置文件中#xff0c;在以前我们会把他保存到web.config中#xff0c;但是在ASP.NET C… 前言 在应用程序开发的过程中有的时候需要在代码中保存一些机密的信息比如加密密钥字符串或者是用户名密码等。通常的做法是保存到一个配置文件中在以前我们会把他保存到web.config中但是在ASP.NET Core中这一方式或许发生了改变或者说你有更多多元化的方法, 以及更加优雅的的配置来设置或者保存这些机密资料。 起初我以为这个UserSecrets它并没有什么用因为我有需要配置的地方我直接配置到appsetting.json文件中就可以了直到一次开发过程中我才感受到了它真正的用途。 目录 用户机密介绍如何添加用户机密在应用程序中使用用户机密总结 用户机密介绍 有以下场景大家可以想一下在以前的代码中我们是怎么样处理的 需要保存一些和第三方网站对接的密钥比如和 微信微博站点使用的 appkey给每个开发人员配置不用的用户名密码来访问一些资源开发人员在开发过程中使用各自本机的数据库如何配置数据库地址、账号和密码 假设说最后一项每个开发要使用自己本机的数据库你可能会说让每个人修改自己的web.config在提交代码的时候不提交就行了。那么如果在web.config添加其他配置项的时候显然不提交web.config文件不合理的。 现在ASP.NET Core 提供了一种很优雅简洁的方式 User Secrets 用来帮助我们解决这个事情。 在新建一个 ASP.NET Core Web 应用程序的时候会在 Startup.cs 文件中看到这样一段代码 public Startup(IHostingEnvironment env) {..... if (env.IsDevelopment()){builder.AddUserSecrets();}builder.AddEnvironmentVariables();
} 在 project.json 文件中会看到 User Secrets 相关的一些配置 {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是用来标识项目的User Secrets唯一性的如果有两个项目需要使用不同的Secrets 这就需要有不同的userSecretsId。 Microsoft.Extensions.SecretManager.Tools 主要是用来设置或者查看secrets的值。 如何添加用户机密 可以在命令行中使用命令来添加 切换命令行窗口到程序的运行目录 输入 dotnet user-secrets -h ,来查看可以使用的命令使用 dotnet user-secrets list 列出所有的用户机密使用 dotnet user-secrets set WeChatAppKey X3423FEED2435DD设置一个用户机密其中 WebChatAppKey 为键后面的是值。然后使用dotnet user-secrets list来查看设置的键值对。然后我又设置了一个数据库的连接字符串进去。 以上是使用命令行的方式来设置用户机密也可以使用 Visual Studio 2015代替命令行来做这项工作。 Visual Studio中在Web项目上右键,可以看到一个 管理用户机密 的菜单 点击打开时候会出现一个secrets.json的文件里面就是刚刚在命令行设置的键值对 有些同学可能会问既然是存储到secrets.json那么这个文件是在哪里呢 secrets.json的存储位置 在非Windows系统中它的存储位置在 ~/.microsoft/usersecrets/userSecretsId/secrets.json 在Windows系统中它的位置在 C:\Users\用户名\AppData\Roaming\Microsoft\UserSecrets\aspnet-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.ConfigureSecretsKeysConfig(Configuration.GetSection(SecretsKeys)); // 其他代码} HomeController.cs public class HomeController : Controller{ public SecretsKeysConfig AppConfigs { get; } public HomeController(IOptionsSecretsKeysConfig appkeys) {AppConfigs appkeys.Value;}} 注意如果你的appsetting.json文件中有和secrets.json文件中相同节点冲突的配置项那么就会被secrets.json中的设置项给覆盖掉因为 builder.AddUserSecrets()晚于 AddJsonFile(appsettings.json)注册, 那么我们可以利用这个特性来在每个开发人员的机器上重新设置数据库连接字符串了。 总结 以上或许可以感受到微软在 ASP.NET Core 中对于开发人员还是非常贴心的很多小细节都考虑到了因此在我们构建应用程序的过程中可以多使用这些小功能特性来让我们的代码更加的优雅 原文地址http://www.cnblogs.com/savorboard/p/dotnetcore-user-secrets.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注 赞赏