当用户访问他们无权查看的页面时,他们会被重定向到登录页面。登录后,它们将重定向到站点根目录。有没有一种快速简便的方法可以将它们重定向回原来要求的页面?
答案 0 :(得分:3)
您可以在referring_page
- 表单中添加隐藏字段sign_in
,以便将former
引荐来源添加到该字段,并在其存在的情况下返回到该字段,如下所示:
def after_sign_in_path_for(resource)
params[:referring_page] || super
end
这是一个手动解决方案,但我更喜欢在控制器端使用复杂的逻辑。
答案 1 :(得分:1)
我不明白你想要实现的目标是“如果用户访问他们无权查看的页面,他们会被重定向到登录页面。登录后,他们会被重定向到站点根目录”
我假设有两组用户,一组是admin-user,另一组是非管理员用户,我处理的方式就是这样,
内部应用程序控制器
class ApplicationController < ActionController::Base
protect_from_forgery
check_authorization :unless => :devise_controller?
before_filter :authenticate_user!
rescue_from CanCan::AccessDenied do |exception|
redirect_to root_url, :alert => exception.message
end
protected
def stored_location_for(resource_or_scope)
nil
end
def after_sign_in_path_for(resource_or_scope)
if current_user.admin?
#add your desired path
else
#redirect to your desired path
end
end
end