我想在我的模塊化Sinatra應用中對特定路由使用HTTP摘要式身份驗證。對單個路由使用HTTP摘要式身份驗證
sinatra recipes website中列出的示例僅描述如何爲整個應用程序啓用摘要身份驗證。針對特定路線的解決方案是爲了創建兩個獨立的應用程序(一個使用摘要身份驗證,另一個不使用),將受保護和未受保護的路線置於各自的應用程序中。
這就需要像下面這樣:
require 'sinatra/base'
class Protected < Sinatra::Base
use Rack::Auth::Basic, "Protected Area" do |username, password|
username == 'foo' && password == 'bar'
end
get '/' do
"secret"
end
end
class Public < Sinatra::Base
get '/' do
"public"
end
end
這似乎有點小題大做了我。
有沒有辦法在模塊化的sinatra應用程序中保護單個路線,而無需創建全新的應用程序?
在FAQ中有一個例子,它創建一個Rack :: Auth :: Basic :: Request實例並傳入環境中,但是使用digest auth做這樣的事情會有很大的不同,並且更多的是手冊認證程序。
這裏是基本認證例如:
def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.provided? &&
@auth.basic? &&
@auth.credentials &&
@auth.credentials == ['admin', 'admin']
end
有沒有人對如何可以這樣做的想法?
不能用Sinatra應用程序的中間件完成這件事 – Viren
哦拍完小姐完全錯過了,你已經在做 – Viren