gpt4 book ai didi

ruby - 如何确保用户不能从父引擎中重定向到子引擎中的另一个元素

转载 作者:数据小太阳 更新时间:2023-10-29 08:12:49 27 4
gpt4 key购买 nike

我有一些引擎安装在另一个引擎中,因为这个引擎是来自不同引擎的多个子元素的集合。该引擎最终安装在主应用程序中。我的路线如下:

Rails.application.routes.draw do

namespace :Parent_Engine, :path => "/foo" do
match "/", :to=>"parent_engine#index"

resources :parent_engine , :only=>[:show] do
mount Engine1::Engine => '/engine1'
mount Engine2::Engine => '/engine2'
end
end
end

现在,当我希望看到来自“engine1”的元素时,我只需要一个 url 作为

/parent_engine/:id/engine1/object_type/:id

我面临的问题是我需要通过显式更新浏览器中的 url 来阻止用户访问 engine1 的另一个对象。例如:

来自:

/parent_engine/1/engine1/object_type/1

到:

/parent_engine/2/engine1/object_type/2

我也无法检查已安装的引擎,因为它们也单独安装在容器应用程序中。我只是不希望用户在父引擎的上下文中能够重定向到另一个对象实例。

提前感谢并问候任何帮助。

最佳答案

我不确定你到底想做什么,但我怀疑你可以使用路由限制:

Rails.application.routes.draw do

namespace :Parent_Engine, :path => "/foo" do
match "/", :to=>"parent_engine#index"

resources :parent_engine , :only=>[:show] do
mount Engine1::Engine => '/engine1', :constraints => Engine1Contraint.new
mount Engine2::Engine => '/engine2'
end
end
end

然后你可以用config/initializers/engine1_contraints.rb定义

class Engine1Contraint
def matches?(request)
request.path != 'something' || request.env['warden'].user == 'Admin'
end
end

或者您需要在那里调整的任何规则,从母引擎到控制子引擎。

关于ruby - 如何确保用户不能从父引擎中重定向到子引擎中的另一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com