ruby-on-rails – RoR – 首选 – 机架中间件或主动控制器滤波器
对于最新版本的
Ruby on Rails(在提出这个问题时有4个),实现修改请求/响应的代码(如身份验证机制)的首选方法是什么.我看到许多站点和教程提倡
Rack middleware,而看起来可以通过
Action Controller filter methods实现相同的功能.
除了讨论首选方法之外,还可以比较每种方法的优缺点吗?在我的初步调查中,似乎动作控制器过滤器方法更紧密地集成到RoR应用程序中,这样您就可以绕过在某些控制器端点上运行某些过滤器,而中间件似乎无法具有该级别的控制.像这样的细节会很棒.谢谢! 解决方法
Rack Middleware和ActionController过滤器真的很不一样.
Rack是标准的Ruby webserver接口.它的设计工作方式使得Rack应用程序或“Middlewares”可以链接在一起,每个都以特定方式转换请求/响应.如果您创建/使用机架中间件,您将有机会在实际到达Rails应用程序之前转换请求. ActionController过滤器只是在Rails中直接控制器方法之前或之后执行的钩子之前/之后.这些将在控制器方法之前或之后立即调用,但是在Rails堆栈的整个剩余部分之后调用. 因此,通过Rack Middleware和ActionController过滤器可能存在显着差异,即,因为Rack Middleware在您的应用程序代码之前执行,它将不会在与您的应用程序代码相同的范围内执行 – 例如除非您明确要求并执行必要的初始化(如建立数据库连接),否则您将无法使用您的应用程序模型等. 如果你正在寻找经验法则,那么我会告诉你: >如果要在特定控制器中的方法之前对请求执行某些操作,请在该控制器中使用before filter. 希望有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |