【问题标题】:Ruby on Rails Rack middleware excludeRuby on Rails Rack 中间件排除
【发布时间】:2015-05-04 17:59:30
【问题描述】:

我想配置中间件以从基本身份验证中排除某些路径。我可以这样做:

config.middleware.insert_after(::Rack::Lock, "AuthenticateExcluding", realm: "Staging", exclude: ["/webhooks/stripe", "/api/v2/gadgets"]) do |u, p|

但是,我想排除与特定模式匹配的所有路由,例如/api/v2/gadgets/:gadget_id/specs(人为示例)。这可能吗?

我发现了一个类似的问题here,但似乎他们正在尝试做一些不同的事情,所以这个问题的答案可能会有所不同。感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails rack


    【解决方案1】:

    Damien Matheiu 对您链接的问题的回答绝对适合您。您只需要编写一个适当的过滤器表达式。

    对于上面的示例,这将是这样的:

    unless env['REQUEST_PATH'].match /^\/api\/v2\/gadgets\/(\d+)\/specs$/
      middleware = BasicAuth.new #... args ...
      env = middleware.call(env)
    end
    

    因此,只有当路径与您排除的任何路径都不匹配时,您才会调用 BasicAuth 中间件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多