2015-09-16 11 views
6

Ho già usato:
user-secret set "AWSAccessKey" "my access key" e
user-secret set ""AWSSecretKey" "my secret key"Come si inseriscono i segreti utente ASP.NET 5 (vNext) nella mia classe di utilità?

di mettere le chiavi nel negozio segreto.

Ho questa classe che userò per inviare email tramite Amazon SES, ma non so come ottenere le mie chiavi.

public class MailHelper 
{ 
    public void SendEmailSes(string senderAddress, string receiverAddress, string subject, string body) 
    { 
     using (var client = new AmazonSimpleEmailServiceClient(
      new BasicAWSCredentials("[AWSAccessKey]", "[AWSSecretKey]"), 
      RegionEndpoint.USEast1)) 
     { 
      var sendRequest = new SendEmailRequest 
      { 
       Source = senderAddress, 
       Destination = new Destination { ToAddresses = new List<string> { receiverAddress } }, 
       Message = new Message 
       { 
        Subject = new Content(subject), 
        Body = new Body { Text = new Content(body) } 
       } 
      }; 
      var response = client.SendEmail(sendRequest); 
     } 
    } 
} 

Cosa ho messo nei miei Startup.cs al fine di ottenere le chiavi disponibili nella mia classe MailHelper? Cosa deve essere aggiunto alla classe MailHelper stessa?

Ho visto alcuni esempi per i controller MVC, ma non ho trovato nulla per le classi di utilità personalizzate che non implementano già alcune interfacce previste.

risposta

13

Una classe per le impostazioni:

public class AwsSettings 
{ 
    public string AccessKey { get; set; } = string.Empty; 
    public string AccessSecret{ get; set; } = string.Empty; 
} 

se le impostazioni fossero in config.json si farebbe in questo modo:

{ 
    "AwsSettings": { 
    "AccessKey": "yourkey", 
    "AccessSecret": "yoursecret" 
    } 
} 

in avvio si avrebbe bisogno di questo:

services.Configure<AwsSettings>(Configuration.GetSection("AwsSettings")); 

la classe mailer avrebbe bisogno delle impostazioni immesse nel costruttore

using Microsoft.Framework.OptionsModel; 

public class MailHelper 
{ 
    public MailHelper(IOptions<AwsSettings> awsOptionsAccessor) 
    { 
     awsSettings = awsOptionsAccessor.Options; 
    } 
    private AwsSettings awsSettings; 

    ... your other methods 

} 

UserSecrets è solo un'altra fonte configuation così invece di config.json si può mettere le impostazioni di lì, ma è necessario simulare la struttura in modo che possa mappare la classe così li si imposta in questo modo con i due punti:

user-secret set "AwsSettings:AccessKey" "my access key" and 
user-secret set "AwsSettings:AccessSecret" "my secret key" 

che è equivalente alla struttura ho mostrato per config.json

ora le impostazioni verranno caricate dalla segreti degli utenti e iniettato nel vostro programma di posta

+0

Va bene, così quando li faccio l'iniezione, come faccio arrivare a loro? Nel giorno in cui usavo ConfigurationManager.AppSettings [] ovunque nella mia app. Come lo faccio ora? – Chris

+0

Ti ho mostrato, ora hai un'istanza di AwsSettings all'interno del tuo MailHelper e puoi ottenere le impostazioni da awsSettings.AccessKey e awsSettings.AccessSecret –

+0

dovresti dimenticare l'idea dell'accesso statico alla configurazione o qualsiasi accesso alla configurazione diverso dall'avvio dove la configurazione può essere mappata alle classi di impostazione che verranno iniettate dove sono necessarie le impostazioni –

Problemi correlati