我可以用密码保护 Sinatra 应用程序不受路线影响吗?

Geo*_*Geo 3 routing ruby-on-rails sinatra

我正在我的路线中安装 Sinatra 应用程序。我想为它提供 http 基本身份验证。我可以从路由文件中做到这一点吗?

mount My::App, :at => "/mysin"
Run Code Online (Sandbox Code Playgroud)

我知道我可以检查对 auth 标头的请求,但我不知道如何向用户提供 auth 对话框。通常,从控制器中,我会这样做authenticate_or_request_with_http_basic,但是由于我不在控制器的上下文中,因此这不起作用。任何解决方法?

Geo*_*Geo 5

This seems to work:

My::App.use(Rack::Auth::Basic) do |username, password|
  username == 'some_user' && password == 'some_password'
end 
mount My::App, :at => "/path"
Run Code Online (Sandbox Code Playgroud)