Com certeza você já precisou armazenar dados sensíveis durante o desenvolvimento dos seus projetos. Dados como connection strings, informações de conexões com redes sociais para viabilizar o login integrado, endereços de email, etc. Estes dados podem ficar expostos quando armazenados juntos do nosso código fonte. Imagine o problema que subir seu código fonte em um repositório público do git hub com a connection string de um banco de dados poderia causar… Para resolver isto o Asp.net Core conta com as User Secrets. A ideia das User Secrets é bem clara: Armazenar seus dados sensíveis separados do código fonte do seu projeto, localmente na sua maquina, na sessão App Data do seu usuário. Evitando assim aquele commit e push com dados sensíveis por engano… Instalando o Asp.Net Core User Secrets e User Secrets Manager Tool Instale o pacote NuGet via Package Manager Console ao seu projeto com o comando abaixo: [code language=”text”] Install-Package Microsoft.Extensions.Configuration.UserSecrets [/code] Para que você consiga gerenciar as suas User Secrets de forma simples e utiliza-las no seu projeto, você precisará adicionar a tool Asp.Net Core User Secrets Manager Tool ao seu projeto na seção tools do seu arquivo .csproj Clique com o botão direito do mouse do nome do seu projeto, e selecione Edit <nome_do_projeto>.csproj Após isto adicione a seu projeto a ferramenta de gerenciamento das suas User Secrets ao seu arquivo .csproj na tag <ItemGroup> [code language=”xml”] <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.1" /> [/code] Execute o comando dotnet restore na sua ferramente de linha de comando dentro do diretório do seu projeto para que o gerenciador seja baixado via NuGet. Para verificar se tudo ocorreu como deveria, execute o comando dotnet user-secrets -h a saída deve ser semelhante a mostrada abaixo: [code language=”text”] > dotnet user-secrets -h User Secrets Manager 1.0.1-rtm-10418 Usage: dotnet user-secrets [options] [command] Options: -?|-h|–help Show help information –version Show version information -v|–verbose Show verbose output -p|–project Path to project, default is current directory -c|–configuration CONFIGURATION The project configuration to use. Defaults to ‘Debug’ –id The user secret id to use. Commands: clear Deletes all the application secrets list Lists all the application secrets remove Removes the specified user secret set Sets the user secret to the specified value Use "dotnet user-secrets [command] –help" for more information about a command. [/code] Configurando o arquivo das User Secrets Clique com o botão direito do mouse no projeto e selecione a opção Manage User Secrets. Este procedimento irá realizar a criação do arquivo JSON (sim, JSON!) que conterá todos as User Secrets do seu projeto. Clique novamente com o botão direito do mouse no projeto e selecione Edit <nome_do_projeto>.csproj Você verá uma nova linha adicionada ao seu arquivo .xml [code language=”xml”] <UserSecretsId>70f06c8f-9b87-42f4-88b2-fa0b36e8394e</UserSecretsId> [/code] Este GUID dentro de <UserSecretsId> será o nome do arquivo onde estarão contidos as seus User Secrets. Altere o Id para que fique mais fácil de ser identificado por você posteriormente. Adicionando uma User Secret Para adicionar uma User Secret abra o console na pasta do projeto, use o comando dotnet user-secrets set Chave Valor onde Chave é o ID da sua informação e Valor o conteúdo da informação a ser armazenada. [code language=”text”] > dotnet user-secrets set Nome Robson; Successfully saved Nome = Robson to the secret store. [/code] Para verificar se tudo deu certo execute o comando dotnet user-secrets list [code language=”text”] > dotnet user-secrets list Nome = Robson [/code] Acessando os User Secrets no seu código fonte Para ter acesso as User Secrets no seu código fonte, acesse a sua classe Startup.cs e no método Startup chame o método AddUserSecrets do objeto builder. Mas atenção! Lembre-se que as User Secrets devem ser usadas somente em ambiente de desenvolvimento, para ambiente de produção, você deve usar os arquivos de configurações .config que já conhecemos. O método Startup do seu arquivo Statup.cs deve ficar como abaixo: [code language=”csharp”] public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); if (env.IsDevelopment()) { builder.AddUserSecrets(); } Configuration = builder.Build(); } [/code] Note das linhas 10 a 13 adicionarmos uma verificação através do objeto env para checar se estamos em ambiente de desenvolvimento e então adicionar as user secrets ao nosso código fonte. Para acessar o valor que você adicionou anteriormente no arquivo da suas User Secrets, utilize o objeto Configuration que você já conhece passando o nome da chave que deseja resgatar o valor: [code language=”csharp”] var nome = Configuration["Nome"]; [/code] Os valores são armazenados em um arquivo de configuração JSON no diretório do perfil do usuário: Windows: %APPDATA%\microsoft\UserSecrets\<userSecretsId>\secrets.json Linux: ~/.microsoft/usersecrets/<userSecretsId>/secrets.json Mac: ~/.microsoft/usersecrets/<userSecretsId>/secrets.json Importante salientar que as user secrets atualmente não são criptografados, mas podem ser algum dia. Simples e útil não é mesmo !? #Ubuntu Compartilhe isso:Clique para compartilhar no Twitter(abre em nova janela)Clique para compartilhar no Facebook(abre em nova janela)Curtir isso:Curtir Carregando...