Devise的经过身份验证和未经身份验证的路由

时间:2016-08-04 20:08:46

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

我创建了一个使用Rails 5的应用程序。我的用户身份验证由Devise gem管理。

我需要为经过身份验证和未经身份验证的用户提供不同的根路径。我按照here给出的提示。一切似乎都很直接,但在登录后,我仍然会在点击我的主页时重定向到正常的root_path。例如链接。

这是我的route.rb代码:

authenticated :user do
  root to: 'api/v1/private/reporting/dashboards/summaries#index', as: :authenticated_root
end
root to: 'landing#index', as: :root

以下是' Home'的代码。链接在我的导航栏中:

- if api_v1_public_members_user_signed_in?
  = link_to 'Home', authenticated_root_path
- else 
  = link_to 'Home', root_path

有人可以发现我可能遗失的东西吗?

**对于' api_v1_public_members_user_signed_in?'方法可能看起来不熟悉,但它是必需的,因为我命名了我的设计控制器。有关详细信息,请参阅here

1 个答案:

答案 0 :(得分:1)

尝试在devise_scope下包装经过身份验证和未经身份验证的根路径,并为它们提供不同的名称:

devise_scope :user do
  authenticated :user do
    root to: 'api/v1/private/reporting/dashboards/summaries#index', as: :authenticated_root
  end

  unauthenticated :user do
    root to: 'landing#index', as: :unauthenticated_root
  end
end

然后,将您的观点更改为:

- if api_v1_public_members_user_signed_in?
  = link_to 'Home', authenticated_root_path
- else 
  = link_to 'Home', unauthenticated_root_path