首页 > 解决方案 > Rails 不会把我带到重置密码表单,不断地重定向我

问题描述

我正在关注 Michael Hartl 的 Ruby 教程指南,并且正在学习第 12 课:密码重置表单。

我的问题是在本地测试时,它不会带我进入重置密码表单。我可以在我的日志中看到它尝试,但最终将我重定向到主页(“/”根)。我不知道为什么它会这样做,因为我正在按照教程进行操作。但它在生产中有效!如果有人想看一下,我在这里有整个 GitHub 存储库。

当我routes.rb看到密码重置 URL 使用rake rails. 我还验证了它确实将我重定向到 / ,因为它在服务器日志中:

Started GET "/password_resets/D7-YG1GP-RNkdVJFp4PwjQ/edit?email=jessica@example.com" for 127.0.0.1 at 2019-06-23 13:13:20 -0400
Processing by PasswordResetsController#edit as HTML
  Parameters: {"email"=>"jessica@example.com", "id"=>"D7-YG1GP-RNkdVJFp4PwjQ"}
  User Load (1.0ms)  SELECT  "users".* FROM "users" WHERE "users"."email" = ? LIMIT ?  [["email", "jessica@example.com"], ["LIMIT", 1]]
  ↳ app/controllers/password_resets_controller.rb:45
Redirected to http://0.0.0.0:3000/
Filter chain halted as :valid_user rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 1.0ms)

看起来罪魁祸首是valid_user功能,但对我来说看起来不错。基本上,用户需要存在于数据库中、被激活并使用令牌进行身份验证。否则,您将被重定向。

# Confirms a valid user.
    def valid_user
        unless (@user && @user.activated? &&
            @user.authenticated?(:reset, params[:id]))
        redirect_to root_url
    end
end

标签: ruby-on-railsruby

解决方案


推荐阅读