我有一个rails 4应用程序,它使用devise进行用户身份验证。在我决定给"Devise::User“模型添加一个"admin”参数之前,一切都运行得很好。我添加了它,并创建了一个自定义用户控制器来合并我的表单,以更新字段。完成此操作后,我添加了更多属性。这就是我的应用程序开始表现不佳的地方。当我尝试使用before_action :authenticate_user!访问某个区域时,系统会将我发送到登录页面,这意味着我尚未登录。当我输入用户凭证并点击提交时,我会被发送到应用程序的root_path,没有成功(或失败)登录的通知,而不是我要去的地方。当我试图返回到限制区域时(现在我已经“登录”了),我又被重定向到登录页面。
在查看了所有这些之后,我发现devise实际上并没有登录,所以我在主页上添加了一个log_out按钮,看看是否可以注销。当我点击它时,我的日志显示为Filter chain halted as :verify_signed_out_user rendered or redirected。我不确定这是否是正常的(因为我现在不能检查)。
我完全不知所措,不知道该往哪里走。我还是个rails新手,所以解决方案可能就在眼前。
这是我的routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => { registrations: 'registrations' }
resources :musics, :composers, :music, :welcome, :charges, :tracks, :books
root 'welcome#index'
get 'admin' => 'welcome#admin'
get 'admin/music/:id/tracks' => 'welcome#tracks', as: :admintracks
end和RegistrationsController.rb
class RegistrationsController < Devise::RegistrationsController
private
def sign_up_params
params.require(:user).permit(:email, :password, :password_confirmation, :admin, :fname, :lname, :company, :address1, :address2, :city, :state, :zip, :phone)
end
def account_update_params
params.require(:user).permit(:email, :password, :password_confirmation, :current_password, :admin, :fname, :lname, :company, :address1, :address2, :city, :state, :zip, :phone)
end
end我很感谢你的帮助。
编辑1:通过在我的root_page上放置一条<% if current_user %>Logged In<% end %>行,我确认它没有登录。通过表单登录后,它仍然不显示。然后我检查了我的日志,看看它为该日志提供了什么,我没有发现任何可疑的东西。
Started POST "/users/sign_in" for ::1 at 2015-12-13 21:16:47 -0500
Processing by Devise::SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"HgStdwJajEbJMKyBgSGTD7Omqvdw9g6gmZwbXEmGd4VRFJqcLlrzjDYAdAWo7VdhpXm7sbNbuFTcR6neJTVr/g==", "user"=>{"email"=>"[*MyEmail*]@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
User Load (0.8ms) SELECT "users".* FROM "users" WHERE "users"."email" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["email", "[*MyEmail*]@gmail.com"]]
(0.1ms) BEGIN
SQL (0.3ms) UPDATE "users" SET "last_sign_in_at" = $1, "current_sign_in_at" = $2, "sign_in_count" = $3, "updated_at" = $4 WHERE "users"."id" = $5 [["last_sign_in_at", "2015-12-14 02:13:31.458050"], ["current_sign_in_at", "2015-12-14 02:16:47.893957"], ["sign_in_count", 27], ["updated_at", "2015-12-14 02:16:47.896163"], ["id", 1]]
(1.1ms) COMMIT
Redirected to http://localhost:3000/发布于 2015-12-14 10:32:36
在跳过相关问题后,我发现了一个(未被接受的)相关问题的答案,它解决了我的问题!在昨晚的前一次尝试中,我把session store domain弄乱了,显然从那以后就再也没有使用过任何与Devise相关的东西。也许这对其他人有帮助!
谢谢,@amit_saxena
https://stackoverflow.com/questions/34258778
复制相似问题