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 4 ActionMailer - 如何在使用 Deliver_later 时捕获连接和 SMTP 错误
Rails ActionMailer - 格式化发件人和收件人姓名/电子邮件地址