CORS Asp.Net Core через appsetting.json - PullRequest
       36

CORS Asp.Net Core через appsetting.json

0 голосов
/ 27 февраля 2019

идея заключается в том, что приложение, над которым я работаю, находится в обратном направлении - когда я ожидаю, что они в одном месте через файл конфигурации, например, appsettings.json, позволяют им изменять информацию о доступе в нем.Так же имеется возможность подключения строки к базе данных.Я делаю это в файле appsetings:

 "CORSConfiguration": {
    "WithOrigin": "",
    "WithMethod": "*",
    "WithHeader": "*",
    "WithCredentials": "*"
  },

В WithOrigin thay будет вставлять запрошенные ресурсы, методы WithMethod и т.д. ... Затем я создаю интерфейс:

public interface ICORSConfiguration
    {
        List<string> WithOrigin { get; set; }
        List<string> WithMethod { get; set; }
        List<string> WithHeader { get; set; }
        List<string> WithCredentials { get; set; }
    }

Затем я создаю класс, которыйунаследуйте этот интерфейс:

public class CORSConfiguration: ICORSConfiguration
{
   public List<string> WithOrigin { get; set; }
   public List<string> WithMethod { get; set; }
   public List<string> WithHeader { get; set; }
   public List<string> WithCredentials { get; set; }
}

Есть ли у вас какие-либо советы о том, как это сделать, каковы возможности здесь ...?Как мне установить эти элементы управления в контроллере ... Я не знаю, как это сделать.Мне это нужно для приложения REST, которое имеет только метод Mail для отправки электронной почты.Метод выглядит так:

[HttpPost("send")]
        public void Send(EmailMessage emailMessage)
        {

            var message = new MimeMessage();
            message.From.Add(new MailboxAddress(emailMessage.Email, emailMessage.Name));
            message.To.AddRange(emailMessage.To.Select(c => new MailboxAddress(c.Email)));
            message.Cc.AddRange(emailMessage.Cc.Select(c => new MailboxAddress(c.Email)));
            message.Bcc.AddRange(emailMessage.Bcc.Select(c => new MailboxAddress(c.Email)));

            message.Subject = emailMessage.Subject;

            message.Body = new TextPart(TextFormat.Html)
            {
                Text = emailMessage.Message
            };
            CorsService corsService = new CorsService();
            corsService.setAllowedOrigins(new HashSet(Array.("*")));

            //_corsConfiguration.WithHeader
            //_corsConfiguration.WithMethod;

            using (var emailClient = new MailKit.Net.Smtp.SmtpClient())
            {
                //emailClient.Connect(_emailConfiguration.SmtpServer, _emailConfiguration.SmtpPort, true);
                emailClient.Connect("smtp.gmail.com", 465);
                //emailClient.Connect("smtp.gmail.com", 587, MailKit.Security.SecureSocketOptions.SslOnConnect);
                emailClient.AuthenticationMechanisms.Remove("XOAUTH2");
                emailClient.Authenticate(_emailConfiguration.SmtpUsername, _emailConfiguration.SmtpPassword);
                //emailClient.
                emailClient.Send(message);
                emailClient.Disconnect(true);
            }

        }

С этим CorsServices я пытаюсь что-то, что не работает ...

1 Ответ

0 голосов
/ 27 февраля 2019

Cors должен быть включен на сервере.Так что если вы вызываете x webservice, то эта служба должна включить поддержку cors.Вы можете сделать это либо на контроллере Lebel, либо намного лучше, если вы делаете это в классе запуска.Подробнее см. Здесь.

Вам не нужно создавать классы и валидации настроек приложения.

https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-2.2

...