根据登录时的用户角色设计重定向到特定页面

Zub*_*Man 3 ruby redirect ruby-on-rails devise

我有一个用户三种可能的权限是在我的Rails应用程序,它们是User.is_adminUser.is_schoolUser.is_security。根据我的应用程序的性质,我需要为每个做完全不同事情的用户有一个单独的主屏幕,我正在工作。我遇到的问题与所有用户登录后设计如何自动重定向到 root_path 相关,而不管我设置的权限如何。

我将 Devise Sessions 控制器生成到 Users 命名空间中,并将其覆盖为默认为我的控制器,但是现在当我尝试根据条件权限进行重定向时,我得到了一个DoubleRenderError(明显的原因是 Devise 正在其他地方重定向创建会话时)。

我已经尝试将它作为 after_action 运行,甚至尝试after_sign_in_path_for按照 Devise 文档的方向覆盖该 方法,但我仍然无法让它工作。任何帮助将不胜感激,谢谢!

MZa*_*oza 6

你可以做这样的事情

class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    if resource.role == 'admin'
      admin_root_path
    else
      user_root_path
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

你可以阅读更多关于这个https://github.com/plataformatec/devise/wiki/How-To:-redirect-to-a-specific-page-on-successful-sign-in