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

标签 ruby-on-rails ruby redirect devise

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

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

我已尝试将其作为 after_action 运行,甚至尝试覆盖 after_sign_in_path_for 方法,按照有关该问题的 Devise 文档的指导,但我仍然无法使其正常工作。任何帮助将不胜感激,谢谢!

最佳答案

你可以这样做

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

您可以阅读更多相关信息 https://github.com/plataformatec/devise/wiki/How-To:-redirect-to-a-specific-page-on-successful-sign-in

关于ruby-on-rails - 根据登录时的用户角色设计重定向到特定页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32020473/

相关文章:

ruby-on-rails - 使用 rake 数据库 :migrate inside another task leaves pending migrations

iOS 12 - AppAuth 重定向 URL 不触发 AppDelegate

mysql - 在mysql中实现增量搜索

ruby-on-rails - Rails after_save 回调被多次调用

ruby-on-rails - Heroku deplyoment Assets 预编译在 rails 6 上失败

web-services - Go lang http.Redirect 并没有真正在我的服务器中重定向

regex - 使用 htaccess 从子文件夹中删除 index.php 不起作用

ios - 如何将 iOS 函数转换为 Ruby。生成 hmac-sha1 哈希值?

ruby - 为什么 Ruby 在搜索多个事物时需要 or 运算符来查找 find_all 方法?

cygwin 终端中的 ruby​​ 读取字符