设计密码重置问题Rails 4

时间:2014-03-05 04:10:48

标签: ruby-on-rails authentication ruby-on-rails-4 devise

我正在使用Devise进行Rails 4应用程序身份验证,并且遇到密码重置问题。在本地,一切正常,当我粘贴重置链接(即localhost:3000 / users / password / edit?reset_password_token = e_f3ZpqrE_rTBZmKJk_E)时,它按预期工作。

然而,在Heroku上,Devise似乎甚至没有注意到:reset_password_token参数,并自动重定向到/ users / signin并注意到“如果没有来自密码重置电子邮件,则无法访问此页面。如果你确实来自密码重置电子邮件,请确保您使用了提供的完整网址。“

以下是生成链接的示例:http://mysite.io/users/password/edit?reset_password_token=anzYNreZEcz4-dtZy5Uf

我甚至覆盖了我自己的控制器中的assert_reset_token_passed方法来检查params [:reset_password_token]是否实际上是空白的,并且由于某种原因,rails并没有将其从网址中拉出来。这是我修改过的方法:

def assert_reset_token_passed
    logger.info params[:reset_password_token] #This is blank somehow
    if params[:reset_password_token].blank?
      set_flash_message(:alert, :no_token)
      redirect_to new_session_path(resource_name) #This is where the redirect happens
    end
end

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

我遇到了完全相同的问题。我的修复方法是更新production.rb中的config.action_mailer.default_url_options以包含完整的主机(在我的情况下' www.mydomain.com' vs' mydomain.com')

澄清一下,过去是

config.action_mailer.default_url_options = { :host => 'mydomain.com' }

现在它已经

config.action_mailer.default_url_options = { :host => 'www.mydomain.com' }