0

我在我的 ruby​​ on rails 应用程序中使用 gem 'griddler' 和 gem 'griddler-sendgrid' 来接收邮件。

它在登台服务器上运行良好,但在生产服务器上出现问题。我的配置没有问题,我已经用sendgrid support. 他们告诉我只使用DKIM validationSPF check从验证中删除。

我已经检查了这两个宝石,但没有找到与此相关的任何内容。

这是我的 gem 配置详细信息:

红宝石'2.2.3'

宝石'导轨','4.1.2'

宝石'griddler','1.4.0'

宝石'griddler-sendgrid','1.0.0'

有人可以建议我如何在 gem 'griddler-sendgrid' 中跳过 SPF 检查验证吗?

提前致谢!

4

1 回答 1

0

尝试从 github 获取 emails_controller.rb 吗?

https://github.com/thoughtbot/griddler

“在 Rails API 上使用 verify_authenticity_token 修复 ArgumentError”

我已经添加protect_from_forgery with: :null_session

我认为 null_session 应该在 API 控制器中使用,而不用于会话。它在请求期间提供一个空会话。

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

在控制器文件夹 griddler 中添加来自 Griddler github 的新文件,或尝试下面的代码。

/controllers/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

不完全确定整个解决方案,但希望它有助于获得更多方向。

于 2018-07-26T11:58:05.773 回答