Как пропустить проверку SPF в геме griddler-sendgrid? - PullRequest
0 голосов
/ 02 мая 2018

Я использую гем 'griddler' с гемом 'griddler-sendgrid' в своем приложении ruby ​​on rails для входящих сообщений.

На промежуточном сервере работает нормально, но возникает проблема с рабочим сервером. В моей конфигурации нет проблем, я подтвердил это с помощью sendgrid support. Они сказали мне использовать только DKIM validation и удалить SPF check из проверок.

Я проверил оба камня на это, но не нашел ничего подходящего для этого.

Вот мои подробности конфигурации драгоценного камня:

ruby ​​'2.2.3'

драгоценный камень 'rails', '4.1.2'

gem 'griddler', '1.4.0'

gem 'griddler-sendgrid', '1.0.0'

Может кто-нибудь подсказать мне, как я могу пропустить проверку проверки SPF в gem 'griddler-sendgrid'?

Заранее спасибо!

1 Ответ

0 голосов
/ 26 июля 2018

Пробовал получать emails_controller.rb от github?

https://github.com/thoughtbot/griddler

"исправить ArgumentError с помощью verify_authenticity_token в Rails API"

Я добавил protect_from_forgery with: :null_session

Я думаю, что null_session должен использоваться в контроллерах API без использования для сеанса. Он обеспечивает пустой сеанс во время запроса.

https://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html

В папке контроллеров griddler добавьте новый файл из Githdler Github или попробуйте код ниже.

/ Контроллеры / Griddler / emails_controller.rb

class Griddler::EmailsController < ActionController::Base

  skip_before_action :verify_authenticity_token, raise: false
  protect_from_forgery with: :null_session

  def create
    normalized_params.each do |p|
      process_email email_class.new(p)
    end

    head :ok
  end

  private

  delegate :processor_class, :email_class, :processor_method, :email_service, to: :griddler_configuration

  private :processor_class, :email_class, :processor_method, :email_service

  def normalized_params
    Array.wrap(email_service.normalize_params(params))
  end

  def process_email(email)
    processor_class.new(email).public_send(processor_method)
  end

  def griddler_configuration
    Griddler.configuration
  end
end

Не совсем уверен со всем решением, но надеюсь, что это поможет получить еще больше указаний.

...