如何使用Ruby中的Devise链接经过身份验证的页面?

时间:2016-06-26 22:42:40

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

我刚刚设置了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的经过身份验证的版本,在那里我可以看到该页面上的所有内容。不确定发生了什么。

1 个答案:

答案 0 :(得分:0)

我建议你重写代码:

  1. 删除before_filter :authenticate_user!,因为路由已经处理了未经授权的用户的问题。
  2. 删除devise_scope :user do ... end块 - 有一个更简单的解决方案(如下)。
  3. 您的 routes.rb

    authenticated :user do
      root to: redirect('/dashboard'), as: :authenticated_root
    end
    root to: redirect('/users/sign_in')
    
    get "dashboard" => "home#index"