我在登录active_admin后遇到重定向问题。 该应用将我重定向到/ users / sign_in路径。
我遇到了一种让重定向写出类似内容的方法:
def after_sign_in_path_for(resource)
admin_root
end
进入ApplicationController。
问题是已经使用此代码定义了after_sign_in_path_for方法(内部使用whit用户会话登录):
def after_sign_in_path_for(resource)
puts "Info: " + resource.to_json
resource[:is_blocked] ? edit_registration_path(resource) : index_path
end
我该怎么办?当我来自active_admin登录时,不调用该方法。 有没有其他方法可以进行重定向?
非常感谢!
答案 0 :(得分:1)
经过长时间的研究,我找到了答案。
我做的是(在application_controller中):
def after_sign_in_path_for(resource)
case resource
when User
resource[:is_blocked] ? edit_registration_path(resource) : index_path
when AdminUser
admin_root_path
end
end
此外,我还将此行 config.sign_out_all_scopes = false 取消注释到设计初始值设定项中,这样我就可以为不同的角色独立维护会话。
答案 1 :(得分:0)
我解决了这个问题,将此代码添加到我的application_controller.rb:
def after_sign_in_path_for(resource)
request.env['omniauth.origin'] || stored_location_for(resource) || profile_path
end
def admin_access_denied(exception)
redirect_to admin_root_path, :alert => exception.message
end
当然request.env['omniauth.origin']
和profile_path
是来自我的应用程序的路径...可能stored_location_for与其他def一起完成工作......
的问候,