Ruby on rails 4 重定向路由约束中的请求
我已在路由文件中将Sidekiq装载到Ruby on rails 4 重定向路由约束中的请求,ruby-on-rails-4,routes,cancan,sidekiq,cancancan,Ruby On Rails 4,Routes,Cancan,Sidekiq,Cancancan,我已在路由文件中将Sidekiq装载到/Sidekiq端点 我使用constraints选项让它调用外部类进行验证,以防止非私有用户访问该端点 # config/routes.rb mount Sidekiq::Web => "/sidekiq", constraints: Sidekiq::AdminConstraint.new # lib/sidekiq/admin_constraint.rb module Sidekiq class AdminConstraint de
/Sidekiq
端点
我使用constraints
选项让它调用外部类进行验证,以防止非私有用户访问该端点
# config/routes.rb
mount Sidekiq::Web => "/sidekiq", constraints: Sidekiq::AdminConstraint.new
# lib/sidekiq/admin_constraint.rb
module Sidekiq
class AdminConstraint
def matches?(request)
return false unless request.session[:user_id]
user = User.find_by_id(request.session[:user_id])
user && Ability.new(user).can?(:manage, :sidekiq)
end
end
end
这个设置非常有效。但是,它只允许我返回请求是否应该通过的true
/false
。它不让我-
之前的过滤器
有没有办法修改传入的请求
对象以实现重定向
谢谢 我没有直接设置flash消息的想法,但我们可以用不同的方式
否决票
认可的
第三条铁轨上的救援车坏了。不确定它是否已在以后的版本中修复
使用以下解决方案
在routes.rb中,在文件末尾添加以下行
匹配“*path”,:to=>“应用程序#错误_404”
这基本上意味着,任何未在路由中定义的路径最终都将进入应用程序控制器中的错误404。把它放在文件的末尾是非常重要的
在应用程序控制器中,添加
def错误_404
将\重定向到根\路径
结束
谢谢这个答案对我很有帮助: