Rails 6 ActionMailer预览和http基本身份验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails 6 ActionMailer预览和http基本身份验证相关的知识,希望对你有一定的参考价值。

我在production.rb中具有以下ActionMailer配置:

  unless ENV['APP_NAME'] == 'application-production'
    config.action_mailer.preview_path = Rails.root.join('test/mailers/previews')
    config.action_mailer.show_previews = true
  end

问题是,非生产应用程序(例如登台应用程序)应针对整个域进行http身份验证,包括邮件程序预览路径“ / rails / mailers”,现在无需身份验证即可访问。缺少什么配置?

编辑:我尝试根据此答案添加一个初始化程序:https://stackoverflow.com/a/44923157/2116456。我想在初始化程序中使用ActionController :: Base.http_basic_authenticate_with,但是不可用

答案

好的,我找到了一种方法来完成我需要的事情:

我用以下命令设置了一个初始化程序:'initializers / mailer_previews.rb':

if Rails.application.config.action_mailer.show_previews
  Rails::MailersController.prepend_before_action do
    head :forbidden unless authenticate_or_request_with_http_basic('Plz login') do |username, password|
      username == ENV['AUTH_NAME'] && password == ENV['AUTH_PASSWORD']
    end
  end
end

感谢@prcu将我指向正确的方向(see this post

以上是关于Rails 6 ActionMailer预览和http基本身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中预览电子邮件?

Rails 4 ActionMailer - 如何在使用 Deliver_later 时捕获连接和 SMTP 错误

邮件预览中的灯具

Rails ActionMailer - 格式化发件人和收件人姓名/电子邮件地址

Rails 中 ActionMailer Mandrill 的问题

在 Rails3 / ActionMailer 中设置 Message-ID 邮件头