我正在使用Sinatra在Ruby中编写一个较小的Web服务。使用http基本认证(在生产环境中通过https)控制对几乎所有内容的访问。

我想从授权中排除一个特定目录。是否有捷径可寻?

最佳答案

require 'sinatra'

helpers do
  def protected!
    unless authorized?
      response['WWW-Authenticate'] = %(Basic realm="Testing HTTP Auth")
      throw(:halt, [401, "Not authorized\n"])
    end
  end

  def authorized?
    @auth ||=  Rack::Auth::Basic::Request.new(request.env)
    @auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['admin', 'admin']
  end
end

before { protected! unless request.path_info == "/public" }

get('/public') { "I'm public!" }

关于sinatra - 如何在 Sinatra 中排除要求基本身份验证的路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2062801/

10-13 05:08