【问题标题】:How to get the right redirection from email when reset password?重置密码时如何从电子邮件中获得正确的重定向?
【发布时间】:2019-08-21 01:11:41
【问题描述】:

我有 Michael Hartl 的“Ruby on Rails 教程”的示例应用程序。

如果我点击“忘记密码”,我会收到电子邮件通知,如果点击“重置密码”链接,我会被重定向到不存在的错误应用程序,我只能看到空白页面。

https://wrong.com/password_resets/WTk_raloURf8I8sCaXNNkg/edit?email=tatyana_p%70yahoo.com

那个错误的应用程序早先存在但已被删除。 下面的代码显示了正确的主机,但重定向发生在错误的主机上。

ENV['SENDGRID_USERNAME']ENV['SENDGRID_PASSWORD'] 是正确的。

我无法在代码中的其他任何地方找到错误的主机名称并将其更改为正确名称。

config/environments/production.rb

config.consider_all_requests_local       = false
config.action_controller.perform_caching = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
host = 'correct_host.herokuapp.com'
config.action_mailer.default_url_options = { host: host }
ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.sendgrid.net',
  :port           => '587',
  :authentication => :plain,
  :user_name      => ENV['SENDGRID_USERNAME'],
  :password       => ENV['SENDGRID_PASSWORD'],
  :domain         => 'heroku.com',
  :enable_starttls_auto => true
}

如果我复制并粘贴了点击“重置密码”时获得的地址 并在正确的地址上更改了错误的地址 - 我有正确的密码和确认密码字段。

https://correct_host.herokuapp.com/password_resets/WTk_raloURf8I8sCaXNNkg/edit?email=tatyana_p%70yahoo.com

【问题讨论】:

  • 您的邮件程序和邮件程序的视图如何?
  • 除了无法重设密码外,我的一切都与 Michael Hartl 教程中的完全一样。我不知道在哪里将错误的主机更改为正确的主机。
  • 是的,我最初使用了这个错误的主机:我从heroku git clone,我克隆时的目录是空的目录。我按照 heroku 的方向做了一些事情,在这个过程中我已经将主机的名称更改为 right 。有什么办法可以让它像提交/其他任何东西一样工作吗?
  • 尝试this 解决 Git 和 Heroku 的问题

标签: ruby-on-rails ruby


【解决方案1】:

如果您使用的是 Devise 及其默认邮件视图,我建议您检查您的 Rails.application.routes.default_url_options(因为 Devise 使用 edit_password_url 路径帮助器来构建 url)。

【讨论】:

  • 我没有使用任何 Devise 和 routes.rb 不表示任何更改路径。
  • 好的,无论如何要确保Rails.application.routes.default_url_options 有相关的主机。另外,正如@spickermann 所说,如果您向我们展示您的邮寄者的观点,将会很有帮助。
  • 我在谷歌上搜索了你提到的教程railstutorial.org/book/password_reset#cha-password_reset 根据第 6 章,清单 12.9,邮件程序的视图应该在 app/views/user_mailer 目录中,它们看起来很好。你检查了default_url_options 吗? (打开控制台,导航到项目根目录,输入rails c [Enter],输入Rails.application.routes.default_url_options [Enter],输出应该是{:host=>"your-domain.com"},还有Rails.application.routes.url_helpers.edit_password_reset_url('test_token', email: 'test@example.com')的输出是什么?)
  • rails c -e production
  • 2.4.5 :001 > Rails.application.routes.default_url_options => {} 如何添加是空的。合适的主机? Rails.application.routes.url_helpers.edit_password_reset_url('test_token', email: 'test@example.com') ? 2.4.5 :005 > 没有输出也没有错误。
【解决方案2】:

你需要为正确的主机提交

首先去你的master 分支

git checkout master

然后使用正确的主机编辑您的config/environments/production.rb

然后

git add config/environments/production.rb
git commit -m "Right host"
git push heroku

【讨论】:

  • 它说没有什么可提交的,一切都是最新的。我需要将错误的主机更改为正确的主机,而这些命令没有任何改变。
  • 其实是在master上。但这并没有解决问题,因为在这个文件 production.rb 中主机是正确的,但是当我尝试重置密码时它仍然出错。
  • @TM,输入heroku run bash,然后输入cat config/environments/production.rb。并检查主机是否正确
  • 主机错误。但是当我打开 config/environments/production.rb - 有一个正确的......
  • 所以你必须提交。那是你的问题
猜你喜欢
  • 2018-11-02
  • 2021-06-04
  • 2020-11-01
  • 2022-08-06
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
相关资源
最近更新 更多