Ruby on rails cancan/设计-重定向到请求的路径
当用户访问他们无权查看的页面时,他们会被重定向到登录页面。登录后,它们将被重定向到站点根目录。有没有一种简单快捷的方法可以将他们重定向回他们最初要求的页面?我不明白你到底想要实现什么,你可以说“如果用户访问了一个他们无权查看的页面,他们会被重定向到登录页面。登录后,他们会被重定向到网站根目录” 我假设会有两组用户,一个是管理员用户,另一个是非管理员用户,我处理这个问题的方式是这样的 内部应用程序控制器Ruby on rails cancan/设计-重定向到请求的路径,ruby-on-rails,Ruby On Rails,当用户访问他们无权查看的页面时,他们会被重定向到登录页面。登录后,它们将被重定向到站点根目录。有没有一种简单快捷的方法可以将他们重定向回他们最初要求的页面?我不明白你到底想要实现什么,你可以说“如果用户访问了一个他们无权查看的页面,他们会被重定向到登录页面。登录后,他们会被重定向到网站根目录” 我假设会有两组用户,一个是管理员用户,另一个是非管理员用户,我处理这个问题的方式是这样的 内部应用程序控制器 class ApplicationController < ActionControll
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
class ApplicationController:设计\u控制器?
过滤前:验证用户身份!
从CanCan解救|u::拒绝访问do |异常|
将\重定向到根\ url,:alert=>exception.message
结束
受保护的
def存储位置(资源或范围)
无
结束
在路径中签名后定义(资源或范围)
如果是当前的_user.admin?
#添加所需路径
其他的
#重定向到所需路径
结束
结束
结束
我不明白你到底想通过说“如果用户访问一个他们无权查看的页面,他们会被重定向到登录页面。登录后,他们会被重定向到网站根目录”来实现什么
我假设会有两组用户,一个是管理员用户,另一个是非管理员用户,我处理这个问题的方式是这样的
内部应用程序控制器
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
class ApplicationController:设计\u控制器?
过滤前:验证用户身份!
从CanCan解救|u::拒绝访问do |异常|
将\重定向到根\ url,:alert=>exception.message
结束
受保护的
def存储位置(资源或范围)
无
结束
在路径中签名后定义(资源或范围)
如果是当前的_user.admin?
#添加所需路径
其他的
#重定向到所需路径
结束
结束
结束
您可以将一个隐藏字段引用页面
添加到您的登录
-表单中,将先前的
引用者添加到该字段,并在其存在时路由回该字段,如下所示:
def after_sign_in_path_for(resource)
params[:referring_page] || super
end
这是一个手动解决方案,但我更喜欢在控制器端使用复杂的逻辑。您可以在
表单中添加一个隐藏字段引用页面
,将前
引用添加到该字段,并在其存在时返回该字段,如下所示:
def after_sign_in_path_for(resource)
params[:referring_page] || super
end
这是一个手动解决方案,但我更喜欢在控制器端使用复杂的逻辑