2015-09-16 13 views
6

Tôi đã sử dụng:
user-secret set "AWSAccessKey" "my access key"
user-secret set ""AWSSecretKey" "my secret key"Làm thế nào để tiêm ASP.NET 5 (vNext) người dùng bí mật vào lớp tiện ích của riêng tôi?

để có được chìa khóa của tôi vào cửa hàng bí mật.

Tôi có lớp học này mà tôi sẽ sử dụng để gửi email qua Amazon SES, nhưng tôi không biết cách lấy chìa khóa của mình vào đó.

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); 
     } 
    } 
} 

Tôi nên đặt gì trong Startup.cs để nhận các khóa đó trong lớp MailHelper của mình? Những gì cần phải được thêm vào chính lớp MailHelper?

Tôi đã xem một số ví dụ về Bộ điều khiển MVC, nhưng tôi không thể tìm thấy bất kỳ điều gì cho các lớp tiện ích tùy chỉnh chưa triển khai một số giao diện dự kiến.

Trả lời

13

Một lớp học cho các thiết lập của bạn:

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

nếu các cài đặt trong config.json bạn sẽ làm điều đó như thế này:

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

trong Startup, bạn sẽ cần này:

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

lớp gửi thư của bạn sẽ cần cài đặt được tiêm vào hàm tạo

using Microsoft.Framework.OptionsModel; 

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

    ... your other methods 

} 

UserSecrets chỉ là một nguồn configuation nên thay vì config.json bạn có thể đặt các thiết lập ở đó nhưng bạn cần để mô phỏng cấu trúc để nó có thể ánh xạ vào các lớp học của bạn, do đó bạn cài đặt chúng như thế này với dấu hai chấm:

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

đó là tương đương với cấu trúc tôi đã giới thiệu cho config.json

nay là thiết lập này sẽ được nạp từ bí mật người dùng và tiêm vào bưu phẩm của bạn

+0

được rồi, vì vậy khi tôi tiêm cho họ, làm thế nào để tôi nhận được để họ? Quay trở lại trong ngày, tôi sẽ sử dụng ConfigurationManager.AppSettings [] ở bất kỳ đâu trong ứng dụng của tôi. Làm thế nào để tôi làm điều đó ngay bây giờ? – Chris

+0

Tôi đã giới thiệu cho các bạn, bây giờ bạn có một ví dụ về AwsSettings bên trong MailHelper của bạn và bạn có thể lấy các thiết lập từ awsSettings.AccessKey và awsSettings.AccessSecret –

+0

bạn nên quên ý tưởng truy cập tĩnh vào cấu hình hoặc bất kỳ quyền truy cập cấu hình nào khác ngoài khởi động cấu hình có thể được ánh xạ để thiết lập các lớp học sẽ được tiêm vào nơi bạn cần cài đặt –

Các vấn đề liên quan