我的 Rails 应用程序中的用户拥有三种可能的权限,它们是User.is_admin
, User.is_school
, and User.is_security
。根据我的应用程序的性质,我需要为每个用户提供一个单独的主屏幕,这些用户做完全不同的事情,我正在工作。我遇到的问题与所有用户登录后 Devise 如何自动重定向到 root_path 有关,无论我设置的权限如何。
我在 Users 命名空间中生成了 Devise Sessions 控制器,并将其覆盖为默认的控制器,但现在当我尝试根据条件权限进行重定向时,我得到了DoubleRenderError
(明显的原因是 Devise 在创建会话时重定向到其他地方)。
我尝试将其作为 after_action 运行,甚至尝试覆盖after_sign_in_path_for
方法,按照有关此事的设计文档的方向,但我仍然无法让它工作。任何帮助将不胜感激,谢谢!
你可以做这样的事情
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:-成功登录时重定向到特定页面 https://github.com/plataformatec/devise/wiki/How-To:-redirect-to-a-specific-page-on-successful-sign-in
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)