问题标签 [rack-middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
27 浏览

ruby-on-rails-4 - rack 在 rails4 中没有被识别为命令

我有一个 rails4 项目gem 'rails', '4.0.2',并且我在 config/initializers/request_timer.rbRyan bates截屏视频中创建了一个自定义机架模块

但是当我rack middleware在我的项目中运行命令时,它说

-bash: rack: command not found

我没有将rackgem 添加到我的 Gemfile 中,我相信它应该默认带有 rails。

以下是我的 Gemfile

任何帮助,将不胜感激

0 投票
4 回答
15095 浏览

ruby-on-rails-4 - 向 Rails 4 添加自定义中间件

我有一个 Rails 4 示例项目(博客),并且我创建了一个名为“request_timer”的简单中间件config/initializers/request_timer.rb

config/application.rb以两种方式添加了我的中间件

1 ) 添加为常数

这样,当我尝试运行我的 rails 应用程序时,我得到了错误

2)然后我将中间件添加为字符串

这样,它允许我运行 rails 服务器,但是当我访问时localhost:3000,它会出错说

原因是什么?我正在使用Rails4.0.2和.rack-1.5.2ruby 2.0.0p247

0 投票
1 回答
734 浏览

basic-authentication - 使用 Rack::Attack 限制基本身份验证

我已经gem rack-attack为我的应用程序设置了。我想开始限制基于 IP 的基本身份验证。

我的基本身份验证代码设置如下:

我想我的机架攻击将包含以下内容:

0 投票
1 回答
241 浏览

ruby-on-rails - 机架中间件 全局中间件

有人可以解释一下这种和平的代码是如何工作的,尤其是日志过滤器部分。我想log_attributes_filter从我调用的机架文件中分配,该use MongodbLogger::RackMiddleware怎么做?

在我简单地将它用作之前use MongodbLogger::RackMiddleware,但现在我想过滤一些参数,我应该如何正确分配@@log_attributes_filter

0 投票
1 回答
1752 浏览

ruby-on-rails - 带有子域登录管理的 Rails 4 多租户

场景:使用子域并设计的多租户 Rails 应用程序问题:我希望用户能够登录到 mydomain.com,然后作为登录用户转发到他们自己的 subdomain1.mydomain.com 地址。现在他们只能直接登录到他们自己的子域。

我是一个相对的 Rails 新手,我找不到一个简单的解决方案(尽管似乎必须有一个)。理想情况下,我希望 mydomain.com 和 subdomain1.mydomain.com 共享一个 cookie,但我的技能不适合编写自定义中间件。显然,由于它是多租户的,我无法在所有子域中共享一个会话。坚持了几天,并好奇是否有一个简单的解决方案(例如 config.session_store 域设置)在我开始查看 OAuth 或其他更繁琐的解决方案之前我缺少。任何帮助将不胜感激!

编辑:当然,我只是在发布后才发现这个。在注册 Rails 和 Devise 后,将用户登录到他们的子域。将尝试 config.session_store 域: :all 并在过滤器推荐之前发布任何详细信息,如果它不起作用,至少看起来是个好主意。

编辑:适用于我的特定设计的解决方案与子域设置:

基本上,我在登录时使用 session[:subdomain] 在会话中设置子域,并使用它将会话范围限定为当前用户。否则,当域在 session_store 中设置为 :all 时,它会破坏范围。如果用户未被授权,它会通过 request.protocol(http:// 或 https://)+request.domain 重定向将他们重定向到公共主页。简单的!现在,用户可以在同一个会话中在基本域和他们的子域之间移动。

0 投票
0 回答
264 浏览

ruby-on-rails - 除非我们的 Rails 应用程序完全是 API,否则 ActionController::API 是否有好处?

如果我的 Rails 应用程序永远只是一个 API,那么我不是 100%。

考虑到这一点,我保留了 ActionController:

class ApplicationController < ActionController::Base

并选择创建一个 api 控制器,

class ApiController < ActionController::API.

现在,我没有更改我application.rbconfig.api_only.

话虽如此,我确实知道,如果我只构建一个 API,它可能会快 40%,rails-api因为它减少了堆栈中的中间件。我仍然通过继承来获得这种好处ActionController::API吗?如果我没有这 40% 的提升,那么这样做有什么好处吗?

0 投票
0 回答
572 浏览

ruby - Rails - 从中​​间件呈现静态 html 页面

昨天我的应用程序被 yandex bot 访问了一个无效的 URL

并且对于此应用程序正在引发错误

每当出现无效字符错误时,我需要呈现状态为 400 而不是 404 的 400.html 静态页面。我遵循了这个问题rack-robustness gem的解决方案,但它没有达到目的,因为它显示 404 或重定向到特定页面。

我已将以下内容添加到/config/application.rb

这是我的中间件 handle_invalid_percent_encoding.rb

需要“机架”

类 HandleInvalidPercentEncoding

结尾

PS 只有当参数错误是无效编码时,我才需要呈现错误的请求错误。

0 投票
1 回答
318 浏览

ruby - 如何在 Sinatra 中禁用中间件?

我正在使用 Sinatra 制作安全的 Web 服务。它需要 SSL 和随每个请求一起发送的安全令牌。因此,我制作了一个简单的中间件,用于检查每个传入请求是否有安全令牌,如果该请求丢失或无效,则拒绝该请求。

然而,这显然使我的大型验证测试套件失败,因为它们是在我为 Web 服务添加安全性之前编写的。

有没有办法在启用中间件后简单地禁用它?这样我的整个测试套件仍然可以运行,并且我可以单独测试安全中间件。

0 投票
2 回答
681 浏览

ruby-on-rails-4 - Rack::ShowExceptions 在生产 Rails 4.0.4 中启用

遇到一个奇怪的问题,Rack::ShowExceptions在生产环境中为我的 rails 4.0.4 应用程序呈现详细的异常。添加一个config.middleware.delete(Rack::ShowExceptions)toconfig/application.rb仍然设法导致Rack::ShowExceptions 模板被渲染,因此我希望有一些中间件依赖潜伏。

%例如,在请求中使用未转义的应用程序POST会导致Rack::ShowExceptions呈现模板:

示例无效POST请求:

机架中间件:

如果这是相关的,config.exceptions_add = self.routes我们有。config/application.rb

我已经仔细阅读了 ActionPack CHANGELOG,但这个问题很可能已在以后的版本中得到修复!如果是这样,我将不胜感激。

0 投票
2 回答
2010 浏览

ruby-on-rails - RoR - 哪个是首选 - 机架中间件或有源控制器过滤器?

对于最新版本的 Ruby on Rails(在提出此问题时为 4),实现修改请求/响应的代码(例如身份验证机制)的首选方法是什么。我看到许多网站和教程都在提倡Rack 中间件,而似乎可以通过Action Controller 过滤器方法实现相同的功能。

除了谈论首选方法之外,是否可以提供每种方法的优缺点比较?在我最初的调查中,动作控制器过滤器方法似乎更紧密地集成到 RoR 应用程序中,这样您就可以绕过在某些控制器端点上运行某些过滤器,而中间件似乎无法拥有该级别的控制。像这样的细节会很棒。谢谢!