【问题标题】:devise rails application redirecting to users/sign_in设计 Rails 应用程序重定向到 users/sign_in
【发布时间】:2017-10-02 13:26:09
【问题描述】:

所有 - Rails 和 Web 开发的新手。我启动了一个新的 Rails 应用程序并正在使用 Devise。每当我在 users/sign_in 页面上点击 Log In 时,页面就会刷新。

这是我点击登录后的终端日志。它正在显示 POST,我不确定为什么它最终会呈现 devise/sessions/new.html....:

    Started POST "/users/sign_in" for ::1 at 2017-10-02 09:19:20 -0400
Processing by Devise::SessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Ot4EJmxLvXrPpa6WYyqCXHxAUT3DcHimrIfw8HGyu5j7yuXvWArEkWzx59Dj3GZrlVDpgS/xSgXFSIt+mQqQnw==", "user"=>{"email"=>"bob@good.company", "password"=>"[FILTERED]"}, "commit"=>"Log in!"}
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."email" = ? ORDER BY "users"."id" ASC LIMIT ?  [["email", "bob@good.company"], ["LIMIT", 1]]
   (0.1ms)  begin transaction
   (0.1ms)  commit transaction
Completed 401 Unauthorized in 162ms (ActiveRecord: 0.3ms)


Started GET "/users/sign_in" for ::1 at 2017-10-02 09:19:21 -0400
Processing by Devise::SessionsController#new as HTML
  Rendering devise/sessions/new.html.erb within layouts/application
  Rendered devise/shared/_links.html.erb (1.2ms)
  Rendered devise/sessions/new.html.erb within layouts/application (4.6ms)
Completed 200 OK in 45ms (Views: 43.5ms | ActiveRecord: 0.0ms)

我的路线.rb

Rails.application.routes.draw do
  get 'charges/create'
  devise_for :users
  get 'welcome/index'
  get 'welcome/about'
  resources :wikis
  resources :charges, only: [:new, :create]
end

还有我的 User.rb

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable
  has_many :wikis

  before_save { self.email = email.downcase }

  enum role: [:standard, :admin, :premium]
  after_initialize { self.role ||= :standard }

end

感谢您的任何指导,如果我可以提供更多详细信息/代码示例等,请告诉我。

【问题讨论】:

  • 可能看起来像是一个明显/愚蠢的问题,但您输入的用户名+密码是否有效?此用户是否存在于您的数据库中?
  • @TomLord 昨天我清理了我的数据库并使用 Faker gem 为其播种。这可能与它有关吗?当我进入 /sign_up 页面并输入新的用户名和密码时,它会直接将我发送到 localhost:3000。从那里,如果我输入 /users/edit(例如),它会将我重定向回 /sign_up。
  • 如何播种数据并不重要;唯一重要的问题是:用户"bob@good.company" 是否存在,您输入的密码是否正确?如果不是,那么这是预期的行为。
  • 我不明白您对/users/edit 的评论。该路由不存在,因此(默认情况下)您应该会看到 404 页面——除非您已配置“未找到”以响应 401 错误,或重定向到登录页面。
  • 我认为密码不会保存到数据库中,因为当我进入控制台并尝试调用示例用户的密码时,它会返回这个 ------- NoMethodError : #<:activerecord_relation:0x007ff3f286aba8> 的未定义方法“密码”

标签: ruby-on-rails ruby ruby-on-rails-3 devise


【解决方案1】:

请从控制台更新此用户密码

这是因为你只提供了密码属性,你跳过了密码确认属性

例如 User.where(email: "Youremail@email.com").update(password: "password", password_confirmation: "password")

【讨论】:

    最近更新 更多