我刚刚设置了Devise,事情正常。但是,出于某种原因,我的页面在身份验证方面没有合作。
这是我的routes.rb文件。
devise_for :users #, path_names: { sign_out: 'sign_out' }
devise_scope :user do
authenticated :user do
root 'home#index'#, as: :authenticated_root
end
unauthenticated do
root 'devise/sessions#new', as: :unauthenticated_root
end
end
get "/dashboard" => "home#index"
当我输入localhost:3000
时,它会将我重定向到localhost:3000/users/sign_in
上存在的设计登录页面。
当我输入localhost:3000/dashboard
时,它会按照预期将我带到登录页面,但是当我输入我的凭据时,它会不断地将我带回同一个登录页面。
这是我的application_controller.rb文件。
protect_from_forgery with: :exception
before_filter :authenticate_user!
我的目的是让localhost:3000
将我重定向到localhost:3000/dashboard
的经过身份验证的版本,在那里我可以看到该页面上的所有内容。不确定发生了什么。
答案 0 :(得分:0)
我建议你重写代码:
before_filter :authenticate_user!
,因为路由已经处理了未经授权的用户的问题。devise_scope :user do ... end
块 - 有一个更简单的解决方案(如下)。您的 routes.rb :
authenticated :user do
root to: redirect('/dashboard'), as: :authenticated_root
end
root to: redirect('/users/sign_in')
get "dashboard" => "home#index"