【问题标题】:SSL cannot establish secure connection - with Rails 6 app using Devise in HerokuSSL 无法建立安全连接 - 在 Heroku 中使用 Devise 的 Rails 6 应用程序
【发布时间】:2020-08-03 17:51:06
【问题描述】:

正如标题所说,我有一个在 Heroku 中运行的 Rails 6 应用程序,带有 Heroku 提供的自动 SSL 证书。 一切都很好,我可以访问任何页面,并且 https 工作正常。但是,有一个例外: 当用户注册并收到确认电子邮件时,单击链接不起作用出于某种原因(请参阅下面的附加屏幕截图),即使您将链接复制并粘贴到新标签中也会发生同样的情况,当然。

  • Ruby 版本:2.7.1p83
  • Rails 版本:6.0.3.1

火狐:

这是我在尝试访问该 URL https://my_domain.com/users/confirmation?confirmation_token=foobar 时得到的。

我的environments/production.rb 有这些设置:

Rails.application.configure do
  # a few more non important things, and then:
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.smtp_settings = {
    :user_name => ENV['SENDGRID_USERNAME'],
    :password => ENV['SENDGRID_PASSWORD'],
    :domain => 'my_domain.com',
    :address => 'smtp.sendgrid.net',
    :port => 587,
    :authentication => :plain,
    :enable_starttls_auto => true
  }


  config.force_ssl = true
  config.action_mailer.default_url_options = { :host => 'my_domain.com' }
end

这就是 Heroku 中的样子:

我有这些路线供设计:

Rails.application.routes.draw do
  devise_for :users, controllers: { registrations: 'users/registrations',
                                    confirmations: 'users/confirmations' }
  authenticated :user do
    root to: "depots#index", as: :authenticated_root
  end

  root to: "public/welcome#index"
end

控制器看起来像这样:

class Users::ConfirmationsController < Devise::ConfirmationsController
  def after_confirmation_path_for(resource_name, resource)
    sign_in(resource)
    authenticated_root_path
  end
end

你们对可能出现的问题有任何想法吗?如果没有,关于如何解决此问题的任何建议?

2020 年 8 月 4 日更新:

我已将此重定向添加到我的域,但即使它可以从 grownis.com 重定向到 www.grownis.com,它也不适用于 https://grownis.com

【问题讨论】:

  • 澄清一下——当您访问该站点时,您说 SSL 正在工作。所以你可以拉出其他路线,而不是那个特定的设计路线?如果您手动将链接更改为 HTTP 而不是 HTTPS,会发生什么情况?当您发出失败的请求时,您是否在日志中看到任何内容?
  • @Justin 没错。其他所有路线都运行良好,那条路线似乎有些奇怪。如果我将 url 从 https 更改为 http,它会自动返回 https 并触发相同的错误
  • 明白了——日志呢?老实说,这似乎是 Heroku 发生的一些奇怪的事情(而且可能是暂时的)。我也会尝试重新启动 dynos。
  • 试过 heroku logs --ps routerheroku logs 但请求根本没有出现在那里。尝试重新启动测功机,问题仍然存在......
  • 啊,好吧,我没主意了。虽然如果请求根本没有出现在日志中,这意味着它甚至没有命中 Heroku,至少在他们看来是这样。

标签: ruby-on-rails ssl heroku


【解决方案1】:

您的证书不是通配符证书。请检查此链接。

https://grownis.com/

确认链接是https://grownis.com/users/confirmation?confirmation_token=CONRIMATION_TOKEN

您需要从非 www 重定向到 www 或购买通配符证书。

【讨论】:

  • 这实际上是有道理的,我没有注意到。确认后我会更深入地查看并标记您的答案为正确。奇怪的是,“grownis.com”重定向到“www.grownis.com”,但如果你在前面加上“https://”,则重定向不起作用。任何的想法?我已经用我的重定向设置更新了帖子
  • 我明白了。我看到了附上的截图。但我看不到该规则的条件。可以附上截图吗?
猜你喜欢
  • 2021-10-11
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多