【问题标题】:Ruby on rails: how to exclude certain path from rack middleware authentication?Ruby on rails:如何从机架中间件身份验证中排除某些路径?
【发布时间】:2019-08-07 09:49:44
【问题描述】:

我正在尝试使用机架中间件身份验证。我想从身份验证中排除某些路径。 是否可以排除某些特定路径?

这将验证所有以 home 开头的路由。

def call(env)
  request = Rack::Request.new(env)
  if request.path =~ /^\/home/
    super
  else
    @app.call(env)
  end
end

我希望从身份验证中排除路径“home/users/”。从“home/”开始的所有其他路径都应该经过身份验证。 请提供任何线索,谢谢。

【问题讨论】:

  • 你想在这里做什么?验证除“home/users/”之外的所有其他路径或使用“/^\/home/”验证路径并排除“home/users/”?
  • 如果在if条件前加上return @app.call(env) if request.path.eql?('home/users/')这一行,问题可能就解决了。
  • @KrupaSuthar 谢谢,我只是在寻找那个,但您能否指导一下如何排除包含“home/users”的路径。

标签: ruby-on-rails ruby rake basic-authentication


【解决方案1】:

如果您只想排除“home/users/”路径,那么您的中间件应该具有以下结构,

def call(env)
  request = Rack::Request.new(env)
  return @app.call(env) if request.path == "home/users/"
  # your middleware logic of authentication here.
end

更多机架信息可以参考this

【讨论】:

  • 谢谢@krupa suthar
  • 如果需要任何进一步的帮助,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
相关资源
最近更新 更多